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

/*
 * Copyright (C) 2009-2011 Michael 'Mickey' Lauer <mlauer@vanille-media.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 <stdlib.h>
#include <string.h>
#include <fsobasics.h>
#include <gee.h>
#include <gio/gio.h>
#include <freesmartphone.h>
#include <fsotransport.h>
#include <smsutil.h>
#include <conversions.h>
#include <util.h>
#include <gobject/gvaluecollector.h>


#define TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER (unsolicited_response_handler_func_wrapper_get_type ())
#define UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER, UnsolicitedResponseHandlerFuncWrapper))
#define UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER, UnsolicitedResponseHandlerFuncWrapperClass))
#define IS_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER))
#define IS_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER))
#define UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER, UnsolicitedResponseHandlerFuncWrapperClass))

typedef struct _UnsolicitedResponseHandlerFuncWrapper UnsolicitedResponseHandlerFuncWrapper;
typedef struct _UnsolicitedResponseHandlerFuncWrapperClass UnsolicitedResponseHandlerFuncWrapperClass;
typedef struct _UnsolicitedResponseHandlerFuncWrapperPrivate UnsolicitedResponseHandlerFuncWrapperPrivate;
typedef struct _ParamSpecUnsolicitedResponseHandlerFuncWrapper ParamSpecUnsolicitedResponseHandlerFuncWrapper;

#define TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER (unsolicited_response_pdu_handler_func_wrapper_get_type ())
#define UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER, UnsolicitedResponsePduHandlerFuncWrapper))
#define UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER, UnsolicitedResponsePduHandlerFuncWrapperClass))
#define IS_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER))
#define IS_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER))
#define UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER, UnsolicitedResponsePduHandlerFuncWrapperClass))

typedef struct _UnsolicitedResponsePduHandlerFuncWrapper UnsolicitedResponsePduHandlerFuncWrapper;
typedef struct _UnsolicitedResponsePduHandlerFuncWrapperClass UnsolicitedResponsePduHandlerFuncWrapperClass;
typedef struct _UnsolicitedResponsePduHandlerFuncWrapperPrivate UnsolicitedResponsePduHandlerFuncWrapperPrivate;
typedef struct _ParamSpecUnsolicitedResponsePduHandlerFuncWrapper ParamSpecUnsolicitedResponsePduHandlerFuncWrapper;

#define FSO_GSM_TYPE_UNSOLICITED_RESPONSE_HANDLER (fso_gsm_unsolicited_response_handler_get_type ())
#define FSO_GSM_UNSOLICITED_RESPONSE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_UNSOLICITED_RESPONSE_HANDLER, FsoGsmUnsolicitedResponseHandler))
#define FSO_GSM_IS_UNSOLICITED_RESPONSE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_UNSOLICITED_RESPONSE_HANDLER))
#define FSO_GSM_UNSOLICITED_RESPONSE_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_UNSOLICITED_RESPONSE_HANDLER, FsoGsmUnsolicitedResponseHandlerIface))

typedef struct _FsoGsmUnsolicitedResponseHandler FsoGsmUnsolicitedResponseHandler;
typedef struct _FsoGsmUnsolicitedResponseHandlerIface FsoGsmUnsolicitedResponseHandlerIface;

#define FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER (fso_gsm_base_unsolicited_response_handler_get_type ())
#define FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER, FsoGsmBaseUnsolicitedResponseHandler))
#define FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER, FsoGsmBaseUnsolicitedResponseHandlerClass))
#define FSO_GSM_IS_BASE_UNSOLICITED_RESPONSE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER))
#define FSO_GSM_IS_BASE_UNSOLICITED_RESPONSE_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER))
#define FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER, FsoGsmBaseUnsolicitedResponseHandlerClass))

typedef struct _FsoGsmBaseUnsolicitedResponseHandler FsoGsmBaseUnsolicitedResponseHandler;
typedef struct _FsoGsmBaseUnsolicitedResponseHandlerClass FsoGsmBaseUnsolicitedResponseHandlerClass;
typedef struct _FsoGsmBaseUnsolicitedResponseHandlerPrivate FsoGsmBaseUnsolicitedResponseHandlerPrivate;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _unsolicited_response_handler_func_wrapper_unref0(var) ((var == NULL) ? NULL : (var = (unsolicited_response_handler_func_wrapper_unref (var), NULL)))
#define _unsolicited_response_pdu_handler_func_wrapper_unref0(var) ((var == NULL) ? NULL : (var = (unsolicited_response_pdu_handler_func_wrapper_unref (var), NULL)))

#define FSO_GSM_TYPE_AT_UNSOLICITED_RESPONSE_HANDLER (fso_gsm_at_unsolicited_response_handler_get_type ())
#define FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_AT_UNSOLICITED_RESPONSE_HANDLER, FsoGsmAtUnsolicitedResponseHandler))
#define FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_AT_UNSOLICITED_RESPONSE_HANDLER, FsoGsmAtUnsolicitedResponseHandlerClass))
#define FSO_GSM_IS_AT_UNSOLICITED_RESPONSE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_AT_UNSOLICITED_RESPONSE_HANDLER))
#define FSO_GSM_IS_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_AT_UNSOLICITED_RESPONSE_HANDLER))
#define FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_AT_UNSOLICITED_RESPONSE_HANDLER, FsoGsmAtUnsolicitedResponseHandlerClass))

typedef struct _FsoGsmAtUnsolicitedResponseHandler FsoGsmAtUnsolicitedResponseHandler;
typedef struct _FsoGsmAtUnsolicitedResponseHandlerClass FsoGsmAtUnsolicitedResponseHandlerClass;
typedef struct _FsoGsmAtUnsolicitedResponseHandlerPrivate FsoGsmAtUnsolicitedResponseHandlerPrivate;

#define FSO_GSM_TYPE_MODEM (fso_gsm_modem_get_type ())
#define FSO_GSM_MODEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_MODEM, FsoGsmModem))
#define FSO_GSM_IS_MODEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_MODEM))
#define FSO_GSM_MODEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_MODEM, FsoGsmModemIface))

typedef struct _FsoGsmModem FsoGsmModem;
typedef struct _FsoGsmModemIface FsoGsmModemIface;

#define FSO_GSM_TYPE_CHANNEL (fso_gsm_channel_get_type ())
#define FSO_GSM_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_CHANNEL, FsoGsmChannel))
#define FSO_GSM_IS_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_CHANNEL))
#define FSO_GSM_CHANNEL_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_CHANNEL, FsoGsmChannelIface))

typedef struct _FsoGsmChannel FsoGsmChannel;
typedef struct _FsoGsmChannelIface FsoGsmChannelIface;

#define FSO_GSM_MODEM_TYPE_STATUS (fso_gsm_modem_status_get_type ())

#define FSO_GSM_MODEM_TYPE_NETWORK_STATUS (fso_gsm_modem_network_status_get_type ())

#define FSO_GSM_TYPE_AT_COMMAND_SEQUENCE (fso_gsm_at_command_sequence_get_type ())
#define FSO_GSM_AT_COMMAND_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_AT_COMMAND_SEQUENCE, FsoGsmAtCommandSequence))
#define FSO_GSM_AT_COMMAND_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_AT_COMMAND_SEQUENCE, FsoGsmAtCommandSequenceClass))
#define FSO_GSM_IS_AT_COMMAND_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_AT_COMMAND_SEQUENCE))
#define FSO_GSM_IS_AT_COMMAND_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_AT_COMMAND_SEQUENCE))
#define FSO_GSM_AT_COMMAND_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_AT_COMMAND_SEQUENCE, FsoGsmAtCommandSequenceClass))

typedef struct _FsoGsmAtCommandSequence FsoGsmAtCommandSequence;
typedef struct _FsoGsmAtCommandSequenceClass FsoGsmAtCommandSequenceClass;

#define FSO_GSM_TYPE_AT_COMMAND_QUEUE_COMMAND (fso_gsm_at_command_queue_command_get_type ())
#define FSO_GSM_AT_COMMAND_QUEUE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_AT_COMMAND_QUEUE_COMMAND, FsoGsmAtCommandQueueCommand))
#define FSO_GSM_IS_AT_COMMAND_QUEUE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_AT_COMMAND_QUEUE_COMMAND))
#define FSO_GSM_AT_COMMAND_QUEUE_COMMAND_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_AT_COMMAND_QUEUE_COMMAND, FsoGsmAtCommandQueueCommandIface))

typedef struct _FsoGsmAtCommandQueueCommand FsoGsmAtCommandQueueCommand;
typedef struct _FsoGsmAtCommandQueueCommandIface FsoGsmAtCommandQueueCommandIface;

#define FSO_GSM_TYPE_AT_COMMAND (fso_gsm_at_command_get_type ())
#define FSO_GSM_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_AT_COMMAND, FsoGsmAtCommand))
#define FSO_GSM_IS_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_AT_COMMAND))
#define FSO_GSM_AT_COMMAND_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_AT_COMMAND, FsoGsmAtCommandIface))

typedef struct _FsoGsmAtCommand FsoGsmAtCommand;
typedef struct _FsoGsmAtCommandIface FsoGsmAtCommandIface;

#define FSO_GSM_CONSTANTS_TYPE_AT_RESPONSE (fso_gsm_constants_at_response_get_type ())

#define FSO_GSM_MODEM_TYPE_DATA (fso_gsm_modem_data_get_type ())
#define FSO_GSM_MODEM_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_MODEM_TYPE_DATA, FsoGsmModemData))
#define FSO_GSM_MODEM_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_MODEM_TYPE_DATA, FsoGsmModemDataClass))
#define FSO_GSM_MODEM_IS_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_MODEM_TYPE_DATA))
#define FSO_GSM_MODEM_IS_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_MODEM_TYPE_DATA))
#define FSO_GSM_MODEM_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_MODEM_TYPE_DATA, FsoGsmModemDataClass))

typedef struct _FsoGsmModemData FsoGsmModemData;
typedef struct _FsoGsmModemDataClass FsoGsmModemDataClass;

#define FSO_GSM_TYPE_CALL_HANDLER (fso_gsm_call_handler_get_type ())
#define FSO_GSM_CALL_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_CALL_HANDLER, FsoGsmCallHandler))
#define FSO_GSM_IS_CALL_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_CALL_HANDLER))
#define FSO_GSM_CALL_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_CALL_HANDLER, FsoGsmCallHandlerIface))

typedef struct _FsoGsmCallHandler FsoGsmCallHandler;
typedef struct _FsoGsmCallHandlerIface FsoGsmCallHandlerIface;

#define FSO_GSM_TYPE_CALL_INFO (fso_gsm_call_info_get_type ())
#define FSO_GSM_CALL_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_CALL_INFO, FsoGsmCallInfo))
#define FSO_GSM_CALL_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_CALL_INFO, FsoGsmCallInfoClass))
#define FSO_GSM_IS_CALL_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_CALL_INFO))
#define FSO_GSM_IS_CALL_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_CALL_INFO))
#define FSO_GSM_CALL_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_CALL_INFO, FsoGsmCallInfoClass))

typedef struct _FsoGsmCallInfo FsoGsmCallInfo;
typedef struct _FsoGsmCallInfoClass FsoGsmCallInfoClass;

#define FSO_GSM_TYPE_SMS_HANDLER (fso_gsm_sms_handler_get_type ())
#define FSO_GSM_SMS_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_SMS_HANDLER, FsoGsmSmsHandler))
#define FSO_GSM_IS_SMS_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_SMS_HANDLER))
#define FSO_GSM_SMS_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_SMS_HANDLER, FsoGsmSmsHandlerIface))

typedef struct _FsoGsmSmsHandler FsoGsmSmsHandler;
typedef struct _FsoGsmSmsHandlerIface FsoGsmSmsHandlerIface;

#define TYPE_WRAP_HEX_PDU (wrap_hex_pdu_get_type ())
#define WRAP_HEX_PDU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WRAP_HEX_PDU, WrapHexPdu))
#define WRAP_HEX_PDU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_WRAP_HEX_PDU, WrapHexPduClass))
#define IS_WRAP_HEX_PDU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WRAP_HEX_PDU))
#define IS_WRAP_HEX_PDU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_WRAP_HEX_PDU))
#define WRAP_HEX_PDU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_WRAP_HEX_PDU, WrapHexPduClass))

typedef struct _WrapHexPdu WrapHexPdu;
typedef struct _WrapHexPduClass WrapHexPduClass;

#define FSO_GSM_TYPE_ISMS_STORAGE (fso_gsm_isms_storage_get_type ())
#define FSO_GSM_ISMS_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_ISMS_STORAGE, FsoGsmISmsStorage))
#define FSO_GSM_IS_ISMS_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_ISMS_STORAGE))
#define FSO_GSM_ISMS_STORAGE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_ISMS_STORAGE, FsoGsmISmsStorageIface))

typedef struct _FsoGsmISmsStorage FsoGsmISmsStorage;
typedef struct _FsoGsmISmsStorageIface FsoGsmISmsStorageIface;

#define FSO_GSM_TYPE_PHONEBOOK_HANDLER (fso_gsm_phonebook_handler_get_type ())
#define FSO_GSM_PHONEBOOK_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PHONEBOOK_HANDLER, FsoGsmPhonebookHandler))
#define FSO_GSM_IS_PHONEBOOK_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PHONEBOOK_HANDLER))
#define FSO_GSM_PHONEBOOK_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_PHONEBOOK_HANDLER, FsoGsmPhonebookHandlerIface))

typedef struct _FsoGsmPhonebookHandler FsoGsmPhonebookHandler;
typedef struct _FsoGsmPhonebookHandlerIface FsoGsmPhonebookHandlerIface;

#define FSO_GSM_TYPE_PHONEBOOK_STORAGE (fso_gsm_phonebook_storage_get_type ())
#define FSO_GSM_PHONEBOOK_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PHONEBOOK_STORAGE, FsoGsmPhonebookStorage))
#define FSO_GSM_PHONEBOOK_STORAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PHONEBOOK_STORAGE, FsoGsmPhonebookStorageClass))
#define FSO_GSM_IS_PHONEBOOK_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PHONEBOOK_STORAGE))
#define FSO_GSM_IS_PHONEBOOK_STORAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PHONEBOOK_STORAGE))
#define FSO_GSM_PHONEBOOK_STORAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PHONEBOOK_STORAGE, FsoGsmPhonebookStorageClass))

typedef struct _FsoGsmPhonebookStorage FsoGsmPhonebookStorage;
typedef struct _FsoGsmPhonebookStorageClass FsoGsmPhonebookStorageClass;

#define FSO_GSM_TYPE_WATCH_DOG (fso_gsm_watch_dog_get_type ())
#define FSO_GSM_WATCH_DOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_WATCH_DOG, FsoGsmWatchDog))
#define FSO_GSM_IS_WATCH_DOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_WATCH_DOG))
#define FSO_GSM_WATCH_DOG_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_WATCH_DOG, FsoGsmWatchDogIface))

typedef struct _FsoGsmWatchDog FsoGsmWatchDog;
typedef struct _FsoGsmWatchDogIface FsoGsmWatchDogIface;

#define FSO_GSM_TYPE_IPDP_HANDLER (fso_gsm_ipdp_handler_get_type ())
#define FSO_GSM_IPDP_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_IPDP_HANDLER, FsoGsmIPdpHandler))
#define FSO_GSM_IS_IPDP_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_IPDP_HANDLER))
#define FSO_GSM_IPDP_HANDLER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), FSO_GSM_TYPE_IPDP_HANDLER, FsoGsmIPdpHandlerIface))

typedef struct _FsoGsmIPdpHandler FsoGsmIPdpHandler;
typedef struct _FsoGsmIPdpHandlerIface FsoGsmIPdpHandlerIface;

#define FSO_GSM_TYPE_ROUTE_INFO (fso_gsm_route_info_get_type ())
#define FSO_GSM_ROUTE_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_ROUTE_INFO, FsoGsmRouteInfo))
#define FSO_GSM_ROUTE_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_ROUTE_INFO, FsoGsmRouteInfoClass))
#define FSO_GSM_IS_ROUTE_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_ROUTE_INFO))
#define FSO_GSM_IS_ROUTE_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_ROUTE_INFO))
#define FSO_GSM_ROUTE_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_ROUTE_INFO, FsoGsmRouteInfoClass))

typedef struct _FsoGsmRouteInfo FsoGsmRouteInfo;
typedef struct _FsoGsmRouteInfoClass FsoGsmRouteInfoClass;

#define FSO_GSM_TYPE_ABSTRACT_AT_COMMAND (fso_gsm_abstract_at_command_get_type ())
#define FSO_GSM_ABSTRACT_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_ABSTRACT_AT_COMMAND, FsoGsmAbstractAtCommand))
#define FSO_GSM_ABSTRACT_AT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_ABSTRACT_AT_COMMAND, FsoGsmAbstractAtCommandClass))
#define FSO_GSM_IS_ABSTRACT_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_ABSTRACT_AT_COMMAND))
#define FSO_GSM_IS_ABSTRACT_AT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_ABSTRACT_AT_COMMAND))
#define FSO_GSM_ABSTRACT_AT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_ABSTRACT_AT_COMMAND, FsoGsmAbstractAtCommandClass))

typedef struct _FsoGsmAbstractAtCommand FsoGsmAbstractAtCommand;
typedef struct _FsoGsmAbstractAtCommandClass FsoGsmAbstractAtCommandClass;

#define FSO_GSM_TYPE_TWO_PARAMS_AT_COMMAND (fso_gsm_two_params_at_command_get_type ())
#define FSO_GSM_TWO_PARAMS_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_TWO_PARAMS_AT_COMMAND, FsoGsmTwoParamsAtCommand))
#define FSO_GSM_TWO_PARAMS_AT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_TWO_PARAMS_AT_COMMAND, FsoGsmTwoParamsAtCommandClass))
#define FSO_GSM_IS_TWO_PARAMS_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_TWO_PARAMS_AT_COMMAND))
#define FSO_GSM_IS_TWO_PARAMS_AT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_TWO_PARAMS_AT_COMMAND))
#define FSO_GSM_TWO_PARAMS_AT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_TWO_PARAMS_AT_COMMAND, FsoGsmTwoParamsAtCommandClass))

typedef struct _FsoGsmTwoParamsAtCommand FsoGsmTwoParamsAtCommand;
typedef struct _FsoGsmTwoParamsAtCommandClass FsoGsmTwoParamsAtCommandClass;

#define FSO_GSM_TYPE_PLUS_CIEV (fso_gsm_plus_ciev_get_type ())
#define FSO_GSM_PLUS_CIEV(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CIEV, FsoGsmPlusCIEV))
#define FSO_GSM_PLUS_CIEV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CIEV, FsoGsmPlusCIEVClass))
#define FSO_GSM_IS_PLUS_CIEV(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CIEV))
#define FSO_GSM_IS_PLUS_CIEV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CIEV))
#define FSO_GSM_PLUS_CIEV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CIEV, FsoGsmPlusCIEVClass))

typedef struct _FsoGsmPlusCIEV FsoGsmPlusCIEV;
typedef struct _FsoGsmPlusCIEVClass FsoGsmPlusCIEVClass;
typedef struct _FsoGsmAbstractAtCommandPrivate FsoGsmAbstractAtCommandPrivate;
typedef struct _FsoGsmTwoParamsAtCommandPrivate FsoGsmTwoParamsAtCommandPrivate;

#define FSO_GSM_TYPE_PLUS_CMTI (fso_gsm_plus_cmti_get_type ())
#define FSO_GSM_PLUS_CMTI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CMTI, FsoGsmPlusCMTI))
#define FSO_GSM_PLUS_CMTI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CMTI, FsoGsmPlusCMTIClass))
#define FSO_GSM_IS_PLUS_CMTI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CMTI))
#define FSO_GSM_IS_PLUS_CMTI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CMTI))
#define FSO_GSM_PLUS_CMTI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CMTI, FsoGsmPlusCMTIClass))

typedef struct _FsoGsmPlusCMTI FsoGsmPlusCMTI;
typedef struct _FsoGsmPlusCMTIClass FsoGsmPlusCMTIClass;
typedef struct _FsoGsmPlusCMTIPrivate FsoGsmPlusCMTIPrivate;

#define FSO_GSM_TYPE_SIMPLE_AT_COMMAND (fso_gsm_simple_at_command_get_type ())
#define FSO_GSM_SIMPLE_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_SIMPLE_AT_COMMAND, FsoGsmSimpleAtCommand))
#define FSO_GSM_SIMPLE_AT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_SIMPLE_AT_COMMAND, FsoGsmSimpleAtCommandClass))
#define FSO_GSM_IS_SIMPLE_AT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_SIMPLE_AT_COMMAND))
#define FSO_GSM_IS_SIMPLE_AT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_SIMPLE_AT_COMMAND))
#define FSO_GSM_SIMPLE_AT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_SIMPLE_AT_COMMAND, FsoGsmSimpleAtCommandClass))

typedef struct _FsoGsmSimpleAtCommand FsoGsmSimpleAtCommand;
typedef struct _FsoGsmSimpleAtCommandClass FsoGsmSimpleAtCommandClass;

#define FSO_GSM_TYPE_PLUS_CSSI (fso_gsm_plus_cssi_get_type ())
#define FSO_GSM_PLUS_CSSI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CSSI, FsoGsmPlusCSSI))
#define FSO_GSM_PLUS_CSSI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CSSI, FsoGsmPlusCSSIClass))
#define FSO_GSM_IS_PLUS_CSSI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CSSI))
#define FSO_GSM_IS_PLUS_CSSI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CSSI))
#define FSO_GSM_PLUS_CSSI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CSSI, FsoGsmPlusCSSIClass))

typedef struct _FsoGsmPlusCSSI FsoGsmPlusCSSI;
typedef struct _FsoGsmPlusCSSIClass FsoGsmPlusCSSIClass;

#define FSO_GSM_TYPE_CONSTANTS (fso_gsm_constants_get_type ())
#define FSO_GSM_CONSTANTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_CONSTANTS, FsoGsmConstants))
#define FSO_GSM_CONSTANTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_CONSTANTS, FsoGsmConstantsClass))
#define FSO_GSM_IS_CONSTANTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_CONSTANTS))
#define FSO_GSM_IS_CONSTANTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_CONSTANTS))
#define FSO_GSM_CONSTANTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_CONSTANTS, FsoGsmConstantsClass))

typedef struct _FsoGsmConstants FsoGsmConstants;
typedef struct _FsoGsmConstantsClass FsoGsmConstantsClass;
typedef struct _FsoGsmSimpleAtCommandPrivate FsoGsmSimpleAtCommandPrivate;
#define _fso_gsm_constants_unref0(var) ((var == NULL) ? NULL : (var = (fso_gsm_constants_unref (var), NULL)))

#define FSO_GSM_TYPE_PLUS_CSSU (fso_gsm_plus_cssu_get_type ())
#define FSO_GSM_PLUS_CSSU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CSSU, FsoGsmPlusCSSU))
#define FSO_GSM_PLUS_CSSU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CSSU, FsoGsmPlusCSSUClass))
#define FSO_GSM_IS_PLUS_CSSU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CSSU))
#define FSO_GSM_IS_PLUS_CSSU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CSSU))
#define FSO_GSM_PLUS_CSSU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CSSU, FsoGsmPlusCSSUClass))

typedef struct _FsoGsmPlusCSSU FsoGsmPlusCSSU;
typedef struct _FsoGsmPlusCSSUClass FsoGsmPlusCSSUClass;
typedef struct _FsoGsmModemDataPrivate FsoGsmModemDataPrivate;

#define FSO_GSM_TYPE_PHONEBOOK_PARAMS (fso_gsm_phonebook_params_get_type ())
#define FSO_GSM_PHONEBOOK_PARAMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PHONEBOOK_PARAMS, FsoGsmPhonebookParams))
#define FSO_GSM_PHONEBOOK_PARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PHONEBOOK_PARAMS, FsoGsmPhonebookParamsClass))
#define FSO_GSM_IS_PHONEBOOK_PARAMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PHONEBOOK_PARAMS))
#define FSO_GSM_IS_PHONEBOOK_PARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PHONEBOOK_PARAMS))
#define FSO_GSM_PHONEBOOK_PARAMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PHONEBOOK_PARAMS, FsoGsmPhonebookParamsClass))

typedef struct _FsoGsmPhonebookParams FsoGsmPhonebookParams;
typedef struct _FsoGsmPhonebookParamsClass FsoGsmPhonebookParamsClass;

#define FSO_GSM_TYPE_CONTEXT_PARAMS (fso_gsm_context_params_get_type ())
#define FSO_GSM_CONTEXT_PARAMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_CONTEXT_PARAMS, FsoGsmContextParams))
#define FSO_GSM_CONTEXT_PARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_CONTEXT_PARAMS, FsoGsmContextParamsClass))
#define FSO_GSM_IS_CONTEXT_PARAMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_CONTEXT_PARAMS))
#define FSO_GSM_IS_CONTEXT_PARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_CONTEXT_PARAMS))
#define FSO_GSM_CONTEXT_PARAMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_CONTEXT_PARAMS, FsoGsmContextParamsClass))

typedef struct _FsoGsmContextParams FsoGsmContextParams;
typedef struct _FsoGsmContextParamsClass FsoGsmContextParamsClass;

#define FSO_GSM_TYPE_NETWORK_TIME_REPORT (fso_gsm_network_time_report_get_type ())
#define FSO_GSM_NETWORK_TIME_REPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_NETWORK_TIME_REPORT, FsoGsmNetworkTimeReport))
#define FSO_GSM_NETWORK_TIME_REPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_NETWORK_TIME_REPORT, FsoGsmNetworkTimeReportClass))
#define FSO_GSM_IS_NETWORK_TIME_REPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_NETWORK_TIME_REPORT))
#define FSO_GSM_IS_NETWORK_TIME_REPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_NETWORK_TIME_REPORT))
#define FSO_GSM_NETWORK_TIME_REPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_NETWORK_TIME_REPORT, FsoGsmNetworkTimeReportClass))

typedef struct _FsoGsmNetworkTimeReport FsoGsmNetworkTimeReport;
typedef struct _FsoGsmNetworkTimeReportClass FsoGsmNetworkTimeReportClass;

#define FSO_GSM_TYPE_PLUS_CUSD (fso_gsm_plus_cusd_get_type ())
#define FSO_GSM_PLUS_CUSD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CUSD, FsoGsmPlusCUSD))
#define FSO_GSM_PLUS_CUSD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CUSD, FsoGsmPlusCUSDClass))
#define FSO_GSM_IS_PLUS_CUSD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CUSD))
#define FSO_GSM_IS_PLUS_CUSD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CUSD))
#define FSO_GSM_PLUS_CUSD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CUSD, FsoGsmPlusCUSDClass))

typedef struct _FsoGsmPlusCUSD FsoGsmPlusCUSD;
typedef struct _FsoGsmPlusCUSDClass FsoGsmPlusCUSDClass;
typedef struct _FsoGsmPlusCUSDPrivate FsoGsmPlusCUSDPrivate;

#define FSO_GSM_PLUS_CUSD_TYPE_MODE (fso_gsm_plus_cusd_mode_get_type ())

#define FSO_GSM_TYPE_PLUS_CDS (fso_gsm_plus_cds_get_type ())
#define FSO_GSM_PLUS_CDS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CDS, FsoGsmPlusCDS))
#define FSO_GSM_PLUS_CDS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CDS, FsoGsmPlusCDSClass))
#define FSO_GSM_IS_PLUS_CDS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CDS))
#define FSO_GSM_IS_PLUS_CDS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CDS))
#define FSO_GSM_PLUS_CDS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CDS, FsoGsmPlusCDSClass))

typedef struct _FsoGsmPlusCDS FsoGsmPlusCDS;
typedef struct _FsoGsmPlusCDSClass FsoGsmPlusCDSClass;
typedef struct _FsoGsmPlusCDSPrivate FsoGsmPlusCDSPrivate;

#define FSO_GSM_TYPE_PLUS_CBM (fso_gsm_plus_cbm_get_type ())
#define FSO_GSM_PLUS_CBM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CBM, FsoGsmPlusCBM))
#define FSO_GSM_PLUS_CBM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CBM, FsoGsmPlusCBMClass))
#define FSO_GSM_IS_PLUS_CBM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CBM))
#define FSO_GSM_IS_PLUS_CBM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CBM))
#define FSO_GSM_PLUS_CBM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CBM, FsoGsmPlusCBMClass))

typedef struct _FsoGsmPlusCBM FsoGsmPlusCBM;
typedef struct _FsoGsmPlusCBMClass FsoGsmPlusCBMClass;
#define _cbs_free0(var) ((var == NULL) ? NULL : (var = (cbs_free (var), NULL)))
typedef struct _FsoGsmPlusCBMPrivate FsoGsmPlusCBMPrivate;
#define _g_slist_free0(var) ((var == NULL) ? NULL : (var = (g_slist_free (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))

#define FSO_GSM_TYPE_PLUS_CMT (fso_gsm_plus_cmt_get_type ())
#define FSO_GSM_PLUS_CMT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSO_GSM_TYPE_PLUS_CMT, FsoGsmPlusCMT))
#define FSO_GSM_PLUS_CMT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FSO_GSM_TYPE_PLUS_CMT, FsoGsmPlusCMTClass))
#define FSO_GSM_IS_PLUS_CMT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSO_GSM_TYPE_PLUS_CMT))
#define FSO_GSM_IS_PLUS_CMT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSO_GSM_TYPE_PLUS_CMT))
#define FSO_GSM_PLUS_CMT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FSO_GSM_TYPE_PLUS_CMT, FsoGsmPlusCMTClass))

typedef struct _FsoGsmPlusCMT FsoGsmPlusCMT;
typedef struct _FsoGsmPlusCMTClass FsoGsmPlusCMTClass;
typedef struct _FsoGsmPlusCMTPrivate FsoGsmPlusCMTPrivate;

typedef void (*UnsolicitedResponseHandlerFunc) (const gchar* prefix, const gchar* rhs, void* user_data);
typedef void (*UnsolicitedResponsePduHandlerFunc) (const gchar* prefix, const gchar* rhs, const gchar* pdu, void* user_data);
struct _UnsolicitedResponseHandlerFuncWrapper {
	GTypeInstance parent_instance;
	volatile int ref_count;
	UnsolicitedResponseHandlerFuncWrapperPrivate * priv;
	UnsolicitedResponseHandlerFunc func;
	gpointer func_target;
	GDestroyNotify func_target_destroy_notify;
};

struct _UnsolicitedResponseHandlerFuncWrapperClass {
	GTypeClass parent_class;
	void (*finalize) (UnsolicitedResponseHandlerFuncWrapper *self);
};

struct _ParamSpecUnsolicitedResponseHandlerFuncWrapper {
	GParamSpec parent_instance;
};

struct _UnsolicitedResponsePduHandlerFuncWrapper {
	GTypeInstance parent_instance;
	volatile int ref_count;
	UnsolicitedResponsePduHandlerFuncWrapperPrivate * priv;
	UnsolicitedResponsePduHandlerFunc func;
	gpointer func_target;
	GDestroyNotify func_target_destroy_notify;
};

struct _UnsolicitedResponsePduHandlerFuncWrapperClass {
	GTypeClass parent_class;
	void (*finalize) (UnsolicitedResponsePduHandlerFuncWrapper *self);
};

struct _ParamSpecUnsolicitedResponsePduHandlerFuncWrapper {
	GParamSpec parent_instance;
};

struct _FsoGsmUnsolicitedResponseHandlerIface {
	GTypeInterface parent_iface;
	gboolean (*dispatch) (FsoGsmUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
};

struct _FsoGsmBaseUnsolicitedResponseHandler {
	FsoFrameworkAbstractObject parent_instance;
	FsoGsmBaseUnsolicitedResponseHandlerPrivate * priv;
};

struct _FsoGsmBaseUnsolicitedResponseHandlerClass {
	FsoFrameworkAbstractObjectClass parent_class;
};

struct _FsoGsmBaseUnsolicitedResponseHandlerPrivate {
	GeeHashMap* urcs;
	GeeHashMap* urcpdus;
};

struct _FsoGsmAtUnsolicitedResponseHandler {
	FsoGsmBaseUnsolicitedResponseHandler parent_instance;
	FsoGsmAtUnsolicitedResponseHandlerPrivate * priv;
};

struct _FsoGsmAtUnsolicitedResponseHandlerClass {
	FsoGsmBaseUnsolicitedResponseHandlerClass parent_class;
	void (*plusCALA) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCCWA) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCGEV) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCGREG) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCIEV) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCLIP) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCMTI) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCREG) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCRING) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCSSI) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCSSU) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCTZV) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCUSD) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*no_carrier) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
	void (*plusCDS) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
	void (*plusCBM) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
	void (*plusCMT) (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
};

struct _FsoGsmChannelIface {
	GTypeInterface parent_iface;
	void (*injectResponse) (FsoGsmChannel* self, const gchar* response);
	void (*suspend) (FsoGsmChannel* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*suspend_finish) (FsoGsmChannel* self, GAsyncResult* _res_);
	void (*resume) (FsoGsmChannel* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*resume_finish) (FsoGsmChannel* self, GAsyncResult* _res_);
};

typedef enum  {
	FSO_GSM_MODEM_STATUS_UNKNOWN,
	FSO_GSM_MODEM_STATUS_CLOSED,
	FSO_GSM_MODEM_STATUS_INITIALIZING,
	FSO_GSM_MODEM_STATUS_ALIVE_NO_SIM,
	FSO_GSM_MODEM_STATUS_ALIVE_SIM_LOCKED,
	FSO_GSM_MODEM_STATUS_ALIVE_SIM_UNLOCKED,
	FSO_GSM_MODEM_STATUS_ALIVE_SIM_READY,
	FSO_GSM_MODEM_STATUS_ALIVE_REGISTERED,
	FSO_GSM_MODEM_STATUS_SUSPENDING,
	FSO_GSM_MODEM_STATUS_SUSPENDED,
	FSO_GSM_MODEM_STATUS_RESUMING,
	FSO_GSM_MODEM_STATUS_CLOSING
} FsoGsmModemStatus;

typedef enum  {
	FSO_GSM_MODEM_NETWORK_STATUS_UNKNOWN,
	FSO_GSM_MODEM_NETWORK_STATUS_UNREGISTERED,
	FSO_GSM_MODEM_NETWORK_STATUS_SEARCHING,
	FSO_GSM_MODEM_NETWORK_STATUS_REGISTERED
} FsoGsmModemNetworkStatus;

struct _FsoGsmAtCommandQueueCommandIface {
	GTypeInterface parent_iface;
	guint (*get_retry) (FsoGsmAtCommandQueueCommand* self);
	guint (*get_timeout) (FsoGsmAtCommandQueueCommand* self);
	gchar* (*get_prefix) (FsoGsmAtCommandQueueCommand* self);
	gchar* (*get_postfix) (FsoGsmAtCommandQueueCommand* self);
	gboolean (*is_valid_prefix) (FsoGsmAtCommandQueueCommand* self, const gchar* line);
};

typedef enum  {
	FSO_GSM_AT_COMMAND_ERROR_UNABLE_TO_PARSE
} FsoGsmAtCommandError;
#define FSO_GSM_AT_COMMAND_ERROR fso_gsm_at_command_error_quark ()
typedef enum  {
	FSO_GSM_CONSTANTS_AT_RESPONSE_VALID = 0,
	FSO_GSM_CONSTANTS_AT_RESPONSE_OK = 1,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CONNECT = 2,
	FSO_GSM_CONSTANTS_AT_RESPONSE_UNEXPECTED_LENGTH = 501,
	FSO_GSM_CONSTANTS_AT_RESPONSE_UNABLE_TO_PARSE = 502,
	FSO_GSM_CONSTANTS_AT_RESPONSE_ERROR = 503,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_START = 1000,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_000_PHONE_FAILURE = 1000,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_001_NO_CONNECTION_TO_PHONE = 1001,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_002_PHONE_ADAPTER_LINK_RESERVED = 1002,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_003_OPERATION_NOT_ALLOWED = 1003,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_004_OPERATION_NOT_SUPPORTED = 1004,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_005_PH_SIM_PIN_REQUIRED = 1005,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_006_PH_FSIM_PIN_REQUIRED = 1006,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_007_PH_FSIM_PUK_REQUIRED = 1007,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_010_SIM_NOT_INSERTED = 1010,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_011_SIM_PIN_REQUIRED = 1011,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_012_SIM_PUK_REQUIRED = 1012,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_013_SIM_FAILURE = 1013,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_014_SIM_BUSY = 1014,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_015_SIM_WRONG = 1015,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_016_INCORRECT_PASSWORD = 1016,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_017_SIM_PIN2_REQUIRED = 1017,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_018_SIM_PUK2_REQUIRED = 1018,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_020_MEMORY_FULL = 1020,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_021_INVALID_INDEX = 1021,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_022_NOT_FOUND = 1022,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_023_MEMORY_FAILURE = 1023,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_024_TEXT_STRING_TOO_LONG = 1024,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_025_INVALID_CHARACTERS_IN_TEXT_STRING = 1025,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_026_DIAL_STRING_TOO_LONG = 1026,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_027_INVALID_CHARACTERS_IN_DIAL_STRING = 1027,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_030_NO_NETWORK_SERVICE = 1030,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_031_NETWORK_TIMEOUT = 1031,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_032_NETWORK_NOT_ALLOWED_EMERGENCY_CALLS_ONLY = 1032,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_040_NETWORK_PERSONALIZATION_PIN_REQUIRED = 1040,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_041_NETWORK_PERSONALIZATION_PUK_REQUIRED = 1041,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_042_NETWORK_SUBSET_PERSONALIZATION_PIN_REQUIRED = 1042,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_043_NETWORK_SUBSET_PERSONALIZATION_PUK_REQUIRED = 1043,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_044_SERVICE_PROVIDER_PERSONALIZATION_PIN_REQUIRED = 1044,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_045_SERVICE_PROVIDER_PERSONALIZATION_PUK_REQUIRED = 1045,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_046_CORPORATE_PERSONALIZATION_PIN_REQUIRED = 1046,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_047_CORPORATE_PERSONALIZATION_PUK_REQUIRED = 1047,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_048_PH_SIM_PUK_REQUIRED = 1048,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_100_UNKNOWN_ERROR = 1100,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_103_GPRS_ILLEGAL_MS = 1103,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_106_GPRS_ILLEGAL_ME = 1106,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_107_GPRS_SERVICES_NOT_ALLOWED = 1107,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_111_GPRS_PLMN_NOT_ALLOWED = 1111,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_112_GPRS_LOCATION_AREA_NOT_ALLOWED = 1112,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_113_GPRS_ROAMING_NOT_ALLOWED_IN_THIS_LOCATION_AREA = 1113,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_126_GPRS_OPERATION_TEMPORARY_NOT_ALLOWED = 1126,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_132_GPRS_SERVICE_OPERATION_NOT_SUPPORTED = 1132,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_133_GPRS_REQUESTED_SERVICE_OPTION_NOT_SUBSCRIBED = 1133,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_134_GPRS_SERVICE_OPTION_TEMPORARY_OUT_OF_ORDER = 1134,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_148_GPRS_UNSPECIFIED_ERROR = 1148,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_149_GPRS_PDP_AUTHENTICATION_FAILURE = 1149,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_150_GPRS_INVALID_MOBILE_CLASS = 1150,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_256_OPERATION_TEMPORARILY_NOT_ALLOWED = 1256,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_257_CALL_BARRED = 1257,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_258_PHONE_IS_BUSY = 1258,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_259_USER_ABORT = 1259,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_260_INVALID_DIAL_STRING = 1260,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_261_SS_NOT_EXECUTED = 1261,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_262_SIM_BLOCKED = 1262,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_263_INVALID_BLOCK = 1263,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_265_BUSY_TRY_AGAIN = 1265,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_512_FAILED_TO_ABORT_COMMAND = 1512,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_513_ACM_RESET_NEEDED = 1513,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_514_SIM_APPLICATION_TOOLKIT_BUSY = 1514,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CME_ERROR_772_SIM_POWERED_DOWN = 1772,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_START = 2000,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_001_UNASSIGNED_NUMBER = 2001,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_008_OPERATOR_DETERMINED_BARRING = 2008,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_010_CALL_BARED = 2010,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_021_SHORT_MESSAGE_TRANSFER_REJECTED = 2021,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_027_DESTINATION_OUT_OF_SERVICE = 2027,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_028_UNIDENTIFIED_SUBSCRIBER = 2028,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_029_FACILITY_REJECTED = 2029,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_030_UNKNOWN_SUBSCRIBER = 2030,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_038_NETWORK_OUT_OF_ORDER = 2038,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_041_TEMPORARY_FAILURE = 2041,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_042_CONGESTION = 2042,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_047_RECOURCES_UNAVAILABLE = 2047,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_050_REQUESTED_FACILITY_NOT_SUBSCRIBED = 2050,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_069_REQUESTED_FACILITY_NOT_IMPLEMENTED = 2069,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_081_INVALID_SHORT_MESSAGE_TRANSFER_REFERENCE_VALUE = 2081,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_095_INVALID_MESSAGE_UNSPECIFIED = 2095,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_096_INVALID_MANDATORY_INFORMATION = 2096,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_097_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED = 2097,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_098_MESSAGE_NOT_COMPATIBLE_WITH_SHORT_MESSAGE_PROTOCOL = 2098,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_099_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED = 2099,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_111_PROTOCOL_ERROR_UNSPECIFIED = 2111,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_127_INTERNETWORKING_UNSPECIFIED = 2127,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_128_TELEMATIC_INTERNETWORKING_NOT_SUPPORTED = 2128,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_129_SHORT_MESSAGE_TYPE_0_NOT_SUPPORTED = 2129,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_130_CANNOT_REPLACE_SHORT_MESSAGE = 2130,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_143_UNSPECIFIED_TP_PID_ERROR = 2143,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_144_DATA_CODE_SCHEME_NOT_SUPPORTED = 2144,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_145_MESSAGE_CLASS_NOT_SUPPORTED = 2145,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_159_UNSPECIFIED_TP_DCS_ERROR = 2159,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_160_COMMAND_CANNOT_BE_ACTIONED = 2160,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_161_COMMAND_UNSUPPORTED = 2161,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_175_UNSPECIFIED_TP_COMMAND_ERROR = 2175,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_176_TPDU_NOT_SUPPORTED = 2176,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_192_SC_BUSY = 2192,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_193_NO_SC_SUBSCRIPTION = 2193,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_194_SC_SYSTEM_FAILURE = 2194,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_195_INVALID_SME_ADDRESS = 2195,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_196_DESTINATION_SME_BARRED = 2196,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_197_SM_REJECTED_DUPLICATE_SM = 2197,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_198_TP_VPF_NOT_SUPPORTED = 2198,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_199_TP_VP_NOT_SUPPORTED = 2199,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_208_D0_SIM_SMS_STORAGE_FULL = 2208,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_209_NO_SMS_STORAGE_CAPABILITY_IN_SIM = 2209,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_210_ERROR_IN_MS = 2210,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_211_MEMORY_CAPACITY_EXCEEDED = 2211,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_212_SIM_APPLICATION_TOOLKIT_BUSY = 2212,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_213_SIM_DATA_DOWNLOAD_ERROR = 2213,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_255_UNSPECIFIED_ERROR_CAUSE = 2255,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_300_ME_FAILURE = 2300,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_301_SMS_SERVICE_OF_ME_RESERVED = 2301,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_302_OPERATION_NOT_ALLOWED = 2302,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_303_OPERATION_NOT_SUPPORTED = 2303,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_304_INVALID_PDU_MODE_PARAMETER = 2304,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_305_INVALID_TEXT_MODE_PARAMETER = 2305,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_310_SIM_NOT_INSERTED = 2310,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_311_SIM_PIN_REQUIRED = 2311,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_312_PH_SIM_PIN_REQUIRED = 2312,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_313_SIM_FAILURE = 2313,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_314_SIM_BUSY = 2314,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_315_SIM_WRONG = 2315,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_316_SIM_PUK_REQUIRED = 2316,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_317_SIM_PIN2_REQUIRED = 2317,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_318_SIM_PUK2_REQUIRED = 2318,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_320_MEMORY_FAILURE = 2320,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_321_INVALID_MEMORY_INDEX = 2321,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_322_MEMORY_FULL = 2322,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_330_SMSC_ADDRESS_UNKNOWN = 2330,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_331_NO_NETWORK_SERVICE = 2331,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_332_NETWORK_TIMEOUT = 2332,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_340_NO_CNMA_EXPECTED = 2340,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_500_UNKNOWN_ERROR = 2500,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_512_FAILED_TO_ABORT_COMMAND = 2512,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_513_ACM_RESET_NEEDED = 2513,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_514_INVALID_STATUS = 2514,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_515_DEVICE_BUSY_OR_INVALID_CHARACTER_IN_STRING = 2515,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_516_INVALID_LENGTH = 2516,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_517_INVALID_CHARACTER_IN_PDU = 2517,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_518_INVALID_PARAMETER = 2518,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_519_INVALID_LENGTH_OR_CHARACTER = 2519,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_520_INVALID_CHARACTER_IN_TEXT = 2520,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_521_TIMER_EXPIRED = 2521,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_522_OPERATION_TEMPORARY_NOT_ALLOWED = 2522,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_532_SIM_NOT_READY = 2532,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_534_CELL_BROADCAST_ERROR_UNKNOWN = 2534,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_535_PROTOCOL_STACK_BUSY = 2535,
	FSO_GSM_CONSTANTS_AT_RESPONSE_CMS_ERROR_538_INVALID_PARAMETER = 2538,
	FSO_GSM_CONSTANTS_AT_RESPONSE_EXT_ERROR_START = 3000,
	FSO_GSM_CONSTANTS_AT_RESPONSE_EXT_ERROR_0_INVALID_PARAMETERR = 3000
} FsoGsmConstantsAtResponse;

struct _FsoGsmAtCommandIface {
	GTypeInterface parent_iface;
	guint (*get_timeout) (FsoGsmAtCommand* self);
	guint (*get_retry) (FsoGsmAtCommand* self);
	gchar* (*get_prefix) (FsoGsmAtCommand* self);
	gchar* (*get_postfix) (FsoGsmAtCommand* self);
	gboolean (*is_valid_prefix) (FsoGsmAtCommand* self, const gchar* line);
	void (*parse) (FsoGsmAtCommand* self, const gchar* response, GError** error);
	void (*parseMulti) (FsoGsmAtCommand* self, gchar** response, int response_length1, GError** error);
	void (*parseTest) (FsoGsmAtCommand* self, const gchar* response, GError** error);
	gchar* (*encodeString) (FsoGsmAtCommand* self, const gchar* str);
	gchar* (*decodeString) (FsoGsmAtCommand* self, const gchar* str);
	FsoGsmConstantsAtResponse (*validate) (FsoGsmAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validateTest) (FsoGsmAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validateUrc) (FsoGsmAtCommand* self, const gchar* response);
	FsoGsmConstantsAtResponse (*validateUrcPdu) (FsoGsmAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validateOk) (FsoGsmAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validateMulti) (FsoGsmAtCommand* self, gchar** response, int response_length1);
};

struct _FsoGsmCallHandlerIface {
	GTypeInterface parent_iface;
	void (*handleIncomingCall) (FsoGsmCallHandler* self, FsoGsmCallInfo* call_info);
	void (*handleConnectingCall) (FsoGsmCallHandler* self, FsoGsmCallInfo* call_info);
	void (*handleEndingCall) (FsoGsmCallHandler* self, FsoGsmCallInfo* call_info);
	void (*addSupplementaryInformation) (FsoGsmCallHandler* self, const gchar* direction, const gchar* info);
	void (*activate) (FsoGsmCallHandler* self, gint id, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*activate_finish) (FsoGsmCallHandler* self, GAsyncResult* _res_, GError** error);
	void (*initiate) (FsoGsmCallHandler* self, const gchar* number, const gchar* ctype, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gint (*initiate_finish) (FsoGsmCallHandler* self, GAsyncResult* _res_, GError** error);
	void (*hold) (FsoGsmCallHandler* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*hold_finish) (FsoGsmCallHandler* self, GAsyncResult* _res_, GError** error);
	void (*release) (FsoGsmCallHandler* self, gint id, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*release_finish) (FsoGsmCallHandler* self, GAsyncResult* _res_, GError** error);
	void (*releaseAll) (FsoGsmCallHandler* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*releaseAll_finish) (FsoGsmCallHandler* self, GAsyncResult* _res_, GError** error);
};

struct _FsoGsmISmsStorageIface {
	GTypeInterface parent_iface;
	void (*clean) (FsoGsmISmsStorage* self);
	gint (*addSms) (FsoGsmISmsStorage* self, struct sms* message);
	GeeArrayList* (*keys) (FsoGsmISmsStorage* self);
	void (*message) (FsoGsmISmsStorage* self, const gchar* key, gint index, FreeSmartphoneGSMSIMMessage* result);
	FreeSmartphoneGSMSIMMessage* (*messagebook) (FsoGsmISmsStorage* self, int* result_length1);
	guint16 (*lastReferenceNumber) (FsoGsmISmsStorage* self);
	guint16 (*increasingReferenceNumber) (FsoGsmISmsStorage* self);
	void (*storeTransactionIndizesForSentMessage) (FsoGsmISmsStorage* self, GeeArrayList* hexpdus);
	gint (*confirmReceivedMessage) (FsoGsmISmsStorage* self, gint netreference);
};

struct _FsoGsmSmsHandlerIface {
	GTypeInterface parent_iface;
	void (*handleIncomingSmsOnSim) (FsoGsmSmsHandler* self, guint index, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*handleIncomingSmsOnSim_finish) (FsoGsmSmsHandler* self, GAsyncResult* _res_);
	void (*handleIncomingSms) (FsoGsmSmsHandler* self, const gchar* hexpdu, gint tpdulen, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*handleIncomingSms_finish) (FsoGsmSmsHandler* self, GAsyncResult* _res_);
	void (*handleIncomingSmsReport) (FsoGsmSmsHandler* self, const gchar* hexpdu, gint tpdulen, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*handleIncomingSmsReport_finish) (FsoGsmSmsHandler* self, GAsyncResult* _res_);
	guint16 (*lastReferenceNumber) (FsoGsmSmsHandler* self);
	guint16 (*nextReferenceNumber) (FsoGsmSmsHandler* self);
	GeeArrayList* (*formatTextMessage) (FsoGsmSmsHandler* self, const gchar* number, const gchar* contents, gboolean requestReport);
	void (*storeTransactionIndizesForSentMessage) (FsoGsmSmsHandler* self, GeeArrayList* hexpdus);
	FsoGsmISmsStorage* (*get_storage) (FsoGsmSmsHandler* self);
	void (*set_storage) (FsoGsmSmsHandler* self, FsoGsmISmsStorage* value);
};

struct _FsoGsmPhonebookHandlerIface {
	GTypeInterface parent_iface;
	void (*syncWithSim) (FsoGsmPhonebookHandler* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*syncWithSim_finish) (FsoGsmPhonebookHandler* self, GAsyncResult* _res_);
	FsoGsmPhonebookStorage* (*get_storage) (FsoGsmPhonebookHandler* self);
	void (*set_storage) (FsoGsmPhonebookHandler* self, FsoGsmPhonebookStorage* value);
};

struct _FsoGsmWatchDogIface {
	GTypeInterface parent_iface;
	void (*check) (FsoGsmWatchDog* self);
	void (*resetUnlockMarker) (FsoGsmWatchDog* self);
};

struct _FsoGsmIPdpHandlerIface {
	GTypeInterface parent_iface;
	void (*activate) (FsoGsmIPdpHandler* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*activate_finish) (FsoGsmIPdpHandler* self, GAsyncResult* _res_, GError** error);
	void (*deactivate) (FsoGsmIPdpHandler* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*deactivate_finish) (FsoGsmIPdpHandler* self, GAsyncResult* _res_, GError** error);
	void (*statusUpdate) (FsoGsmIPdpHandler* self, const gchar* status, GHashTable* properties, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*statusUpdate_finish) (FsoGsmIPdpHandler* self, GAsyncResult* _res_);
	void (*connectedWithNewDefaultRoute) (FsoGsmIPdpHandler* self, FsoGsmRouteInfo* route, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*connectedWithNewDefaultRoute_finish) (FsoGsmIPdpHandler* self, GAsyncResult* _res_);
	void (*disconnected) (FsoGsmIPdpHandler* self);
	void (*syncStatus) (FsoGsmIPdpHandler* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*syncStatus_finish) (FsoGsmIPdpHandler* self, GAsyncResult* _res_);
	FreeSmartphoneGSMContextStatus (*get_status) (FsoGsmIPdpHandler* self);
	void (*set_status) (FsoGsmIPdpHandler* self, FreeSmartphoneGSMContextStatus value);
	GHashTable* (*get_properties) (FsoGsmIPdpHandler* self);
	void (*set_properties) (FsoGsmIPdpHandler* self, GHashTable* value);
};

struct _FsoGsmModemIface {
	GTypeInterface parent_iface;
	void (*open) (FsoGsmModem* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*open_finish) (FsoGsmModem* self, GAsyncResult* _res_);
	void (*close) (FsoGsmModem* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*close_finish) (FsoGsmModem* self, GAsyncResult* _res_);
	void (*suspend) (FsoGsmModem* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*suspend_finish) (FsoGsmModem* self, GAsyncResult* _res_);
	void (*resume) (FsoGsmModem* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*resume_finish) (FsoGsmModem* self, GAsyncResult* _res_);
	void (*injectResponse) (FsoGsmModem* self, const gchar* command, const gchar* channel, GError** error);
	void (*setFunctionality) (FsoGsmModem* self, const gchar* level, gboolean autoregister, const gchar* pin, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*setFunctionality_finish) (FsoGsmModem* self, GAsyncResult* _res_, GError** error);
	void (*registerChannel) (FsoGsmModem* self, const gchar* name, FsoGsmChannel* channel);
	void (*advanceToState) (FsoGsmModem* self, FsoGsmModemStatus status, gboolean force);
	void (*advanceNetworkState) (FsoGsmModem* self, FsoGsmModemNetworkStatus status);
	FsoGsmAtCommandSequence* (*atCommandSequence) (FsoGsmModem* self, const gchar* channel, const gchar* purpose);
	gpointer (*createMediator) (FsoGsmModem* self, GType t_type, GBoxedCopyFunc t_dup_func, GDestroyNotify t_destroy_func, GError** error);
	gpointer (*createAtCommand) (FsoGsmModem* self, GType t_type, GBoxedCopyFunc t_dup_func, GDestroyNotify t_destroy_func, const gchar* command);
	gpointer (*theDevice) (FsoGsmModem* self, GType t_type, GBoxedCopyFunc t_dup_func, GDestroyNotify t_destroy_func);
	gchar* (*allocateDataPort) (FsoGsmModem* self);
	void (*releaseDataPort) (FsoGsmModem* self);
	void (*processAtCommandAsync) (FsoGsmModem* self, FsoGsmAtCommand* command, const gchar* request, gint retries, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gchar** (*processAtCommandAsync_finish) (FsoGsmModem* self, GAsyncResult* _res_, int* result_length1);
	void (*processAtPduCommandAsync) (FsoGsmModem* self, FsoGsmAtCommand* command, const gchar* request, gint retries, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gchar** (*processAtPduCommandAsync_finish) (FsoGsmModem* self, GAsyncResult* _res_, int* result_length1);
	void (*sendAtCommand) (FsoGsmModem* self, FsoGsmAtCommand* command, const gchar* request, gint retries);
	FsoGsmChannel* (*channel) (FsoGsmModem* self, const gchar* category);
	FsoGsmModemStatus (*status) (FsoGsmModem* self);
	FsoGsmModemNetworkStatus (*network_status) (FsoGsmModem* self);
	FreeSmartphoneGSMDeviceStatus (*externalStatus) (FsoGsmModem* self);
	FsoGsmModemData* (*data) (FsoGsmModem* self);
	void (*registerAtCommandSequence) (FsoGsmModem* self, const gchar* channel, const gchar* purpose, FsoGsmAtCommandSequence* sequence);
	gboolean (*isAlive) (FsoGsmModem* self);
	GObject* (*get_parent) (FsoGsmModem* self);
	void (*set_parent) (FsoGsmModem* self, GObject* value);
	FsoGsmCallHandler* (*get_callhandler) (FsoGsmModem* self);
	void (*set_callhandler) (FsoGsmModem* self, FsoGsmCallHandler* value);
	FsoGsmSmsHandler* (*get_smshandler) (FsoGsmModem* self);
	void (*set_smshandler) (FsoGsmModem* self, FsoGsmSmsHandler* value);
	FsoGsmPhonebookHandler* (*get_pbhandler) (FsoGsmModem* self);
	void (*set_pbhandler) (FsoGsmModem* self, FsoGsmPhonebookHandler* value);
	FsoGsmWatchDog* (*get_watchdog) (FsoGsmModem* self);
	void (*set_watchdog) (FsoGsmModem* self, FsoGsmWatchDog* value);
	FsoGsmIPdpHandler* (*get_pdphandler) (FsoGsmModem* self);
	void (*set_pdphandler) (FsoGsmModem* self, FsoGsmIPdpHandler* value);
};

struct _FsoGsmAbstractAtCommand {
	GObject parent_instance;
	FsoGsmAbstractAtCommandPrivate * priv;
	GRegex* re;
	GRegex* tere;
	GMatchInfo* mi;
	gchar** prefix;
	gint prefix_length1;
	gint length;
};

struct _FsoGsmAbstractAtCommandClass {
	GObjectClass parent_class;
	void (*parse) (FsoGsmAbstractAtCommand* self, const gchar* response, GError** error);
	void (*parseTest) (FsoGsmAbstractAtCommand* self, const gchar* response, GError** error);
	void (*parseMulti) (FsoGsmAbstractAtCommand* self, gchar** response, int response_length1, GError** error);
	FsoGsmConstantsAtResponse (*validateOk) (FsoGsmAbstractAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validate) (FsoGsmAbstractAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validateTest) (FsoGsmAbstractAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validateMulti) (FsoGsmAbstractAtCommand* self, gchar** response, int response_length1);
	FsoGsmConstantsAtResponse (*validateUrc) (FsoGsmAbstractAtCommand* self, const gchar* response);
	FsoGsmConstantsAtResponse (*validateUrcPdu) (FsoGsmAbstractAtCommand* self, gchar** response, int response_length1);
	guint (*get_timeout) (FsoGsmAbstractAtCommand* self);
	guint (*get_retry) (FsoGsmAbstractAtCommand* self);
	gchar* (*get_prefix) (FsoGsmAbstractAtCommand* self);
	gchar* (*get_postfix) (FsoGsmAbstractAtCommand* self);
};

struct _FsoGsmTwoParamsAtCommand {
	FsoGsmAbstractAtCommand parent_instance;
	FsoGsmTwoParamsAtCommandPrivate * priv;
	gpointer value1;
	gpointer value2;
};

struct _FsoGsmTwoParamsAtCommandClass {
	FsoGsmAbstractAtCommandClass parent_class;
};

struct _FsoGsmPlusCMTI {
	FsoGsmAbstractAtCommand parent_instance;
	FsoGsmPlusCMTIPrivate * priv;
	gchar* storage;
	gint index;
};

struct _FsoGsmPlusCMTIClass {
	FsoGsmAbstractAtCommandClass parent_class;
};

struct _FsoGsmSimpleAtCommand {
	FsoGsmAbstractAtCommand parent_instance;
	FsoGsmSimpleAtCommandPrivate * priv;
	gpointer value;
	gchar* righthandside;
	gint min;
	gint max;
};

struct _FsoGsmSimpleAtCommandClass {
	FsoGsmAbstractAtCommandClass parent_class;
};

struct _FsoGsmModemData {
	GObject parent_instance;
	FsoGsmModemDataPrivate * priv;
	gint alarmCleared;
	gboolean simHasReadySignal;
	guint simReadyTimeout;
	gint speakerVolumeMinimum;
	gint speakerVolumeMaximum;
	FreeSmartphoneGSMSIMAuthStatus simAuthStatus;
	gboolean simBuffersSms;
	GeeHashMap* simPhonebooks;
	gchar* charset;
	GeeHashMap* cmdSequences;
	gchar* functionality;
	gchar* simPin;
	gboolean keepRegistration;
	gboolean supportsGSM;
	gboolean supportsCDMA;
	gboolean supportsVoice;
	gboolean supportsCSD;
	gchar* supportsPDP;
	gchar* supportsFAX;
	GHashTable* simOperatorbook;
	gchar* simIssuer;
	gchar* pppCommand;
	gchar* pppPort;
	gchar** pppOptions;
	gint pppOptions_length1;
	FsoGsmContextParams* contextParams;
	gboolean roamingAllowed;
	gchar* atCommandCancelOutgoing;
	gchar* atCommandRejectIncoming;
	FsoGsmNetworkTimeReport* networkTimeReport;
};

struct _FsoGsmModemDataClass {
	GObjectClass parent_class;
};

typedef enum  {
	FSO_GSM_PLUS_CUSD_MODE_COMPLETED = 0,
	FSO_GSM_PLUS_CUSD_MODE_USERACTION = 1,
	FSO_GSM_PLUS_CUSD_MODE_TERMINATED = 2,
	FSO_GSM_PLUS_CUSD_MODE_LOCALCLIENT = 3,
	FSO_GSM_PLUS_CUSD_MODE_UNSUPPORTED = 4,
	FSO_GSM_PLUS_CUSD_MODE_TIMEOUT = 5
} FsoGsmPlusCUSDMode;

struct _FsoGsmPlusCUSD {
	FsoGsmAbstractAtCommand parent_instance;
	FsoGsmPlusCUSDPrivate * priv;
	FsoGsmPlusCUSDMode mode;
	gchar* result;
	gint code;
};

struct _FsoGsmPlusCUSDClass {
	FsoGsmAbstractAtCommandClass parent_class;
};

struct _FsoGsmPlusCDS {
	FsoGsmAbstractAtCommand parent_instance;
	FsoGsmPlusCDSPrivate * priv;
	gchar* hexpdu;
	gint tpdulen;
};

struct _FsoGsmPlusCDSClass {
	FsoGsmAbstractAtCommandClass parent_class;
};

struct _FsoGsmPlusCBM {
	FsoGsmAbstractAtCommand parent_instance;
	FsoGsmPlusCBMPrivate * priv;
	gchar* hexpdu;
	gint tpdulen;
};

struct _FsoGsmPlusCBMClass {
	FsoGsmAbstractAtCommandClass parent_class;
};

struct _FsoGsmPlusCMT {
	FsoGsmAbstractAtCommand parent_instance;
	FsoGsmPlusCMTPrivate * priv;
	gchar* hexpdu;
	gint tpdulen;
};

struct _FsoGsmPlusCMTClass {
	FsoGsmAbstractAtCommandClass parent_class;
};


static gpointer unsolicited_response_handler_func_wrapper_parent_class = NULL;
static gpointer unsolicited_response_pdu_handler_func_wrapper_parent_class = NULL;
static gpointer fso_gsm_base_unsolicited_response_handler_parent_class = NULL;
static FsoGsmUnsolicitedResponseHandlerIface* fso_gsm_base_unsolicited_response_handler_fso_gsm_unsolicited_response_handler_parent_iface = NULL;
static gpointer fso_gsm_at_unsolicited_response_handler_parent_class = NULL;
extern FsoGsmModem* fso_gsm_theModem;

gpointer unsolicited_response_handler_func_wrapper_ref (gpointer instance);
void unsolicited_response_handler_func_wrapper_unref (gpointer instance);
GParamSpec* param_spec_unsolicited_response_handler_func_wrapper (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_unsolicited_response_handler_func_wrapper (GValue* value, gpointer v_object);
void value_take_unsolicited_response_handler_func_wrapper (GValue* value, gpointer v_object);
gpointer value_get_unsolicited_response_handler_func_wrapper (const GValue* value);
GType unsolicited_response_handler_func_wrapper_get_type (void) G_GNUC_CONST;
enum  {
	UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER_DUMMY_PROPERTY
};
UnsolicitedResponseHandlerFuncWrapper* unsolicited_response_handler_func_wrapper_new (void);
UnsolicitedResponseHandlerFuncWrapper* unsolicited_response_handler_func_wrapper_construct (GType object_type);
static void unsolicited_response_handler_func_wrapper_finalize (UnsolicitedResponseHandlerFuncWrapper* obj);
gpointer unsolicited_response_pdu_handler_func_wrapper_ref (gpointer instance);
void unsolicited_response_pdu_handler_func_wrapper_unref (gpointer instance);
GParamSpec* param_spec_unsolicited_response_pdu_handler_func_wrapper (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_unsolicited_response_pdu_handler_func_wrapper (GValue* value, gpointer v_object);
void value_take_unsolicited_response_pdu_handler_func_wrapper (GValue* value, gpointer v_object);
gpointer value_get_unsolicited_response_pdu_handler_func_wrapper (const GValue* value);
GType unsolicited_response_pdu_handler_func_wrapper_get_type (void) G_GNUC_CONST;
enum  {
	UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER_DUMMY_PROPERTY
};
UnsolicitedResponsePduHandlerFuncWrapper* unsolicited_response_pdu_handler_func_wrapper_new (void);
UnsolicitedResponsePduHandlerFuncWrapper* unsolicited_response_pdu_handler_func_wrapper_construct (GType object_type);
static void unsolicited_response_pdu_handler_func_wrapper_finalize (UnsolicitedResponsePduHandlerFuncWrapper* obj);
GType fso_gsm_unsolicited_response_handler_get_type (void) G_GNUC_CONST;
gboolean fso_gsm_unsolicited_response_handler_dispatch (FsoGsmUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
GType fso_gsm_base_unsolicited_response_handler_get_type (void) G_GNUC_CONST;
#define FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER, FsoGsmBaseUnsolicitedResponseHandlerPrivate))
enum  {
	FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER_DUMMY_PROPERTY
};
static gchar* fso_gsm_base_unsolicited_response_handler_real_repr (FsoFrameworkAbstractObject* base);
void fso_gsm_base_unsolicited_response_handler_registerUrc (FsoGsmBaseUnsolicitedResponseHandler* self, const gchar* prefix, UnsolicitedResponseHandlerFunc func, void* func_target);
void fso_gsm_base_unsolicited_response_handler_registerUrcPdu (FsoGsmBaseUnsolicitedResponseHandler* self, const gchar* prefix, UnsolicitedResponsePduHandlerFunc func, void* func_target);
static gboolean fso_gsm_base_unsolicited_response_handler_real_dispatch (FsoGsmUnsolicitedResponseHandler* base, const gchar* prefix, const gchar* rhs, const gchar* pdu);
FsoGsmBaseUnsolicitedResponseHandler* fso_gsm_base_unsolicited_response_handler_new (void);
FsoGsmBaseUnsolicitedResponseHandler* fso_gsm_base_unsolicited_response_handler_construct (GType object_type);
static GObject * fso_gsm_base_unsolicited_response_handler_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void fso_gsm_base_unsolicited_response_handler_finalize (GObject* obj);
GType fso_gsm_at_unsolicited_response_handler_get_type (void) G_GNUC_CONST;
enum  {
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_DUMMY_PROPERTY
};
FsoGsmAtUnsolicitedResponseHandler* fso_gsm_at_unsolicited_response_handler_new (void);
FsoGsmAtUnsolicitedResponseHandler* fso_gsm_at_unsolicited_response_handler_construct (GType object_type);
void fso_gsm_at_unsolicited_response_handler_plusCALA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCALA_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCCWA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCCWA_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCGEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCGEV_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCGREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCGREG_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCIEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCIEV_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCLIP (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCLIP_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCMTI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCMTI_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCREG_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCRING (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCRING_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCSSI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCSSI_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCSSU (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCSSU_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCTZV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCTZV_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCUSD (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_plusCUSD_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_no_carrier (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void _fso_gsm_at_unsolicited_response_handler_no_carrier_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCBM (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
static void _fso_gsm_at_unsolicited_response_handler_plusCBM_unsolicited_response_pdu_handler_func (const gchar* prefix, const gchar* rhs, const gchar* pdu, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCDS (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
static void _fso_gsm_at_unsolicited_response_handler_plusCDS_unsolicited_response_pdu_handler_func (const gchar* prefix, const gchar* rhs, const gchar* pdu, gpointer self);
void fso_gsm_at_unsolicited_response_handler_plusCMT (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
static void _fso_gsm_at_unsolicited_response_handler_plusCMT_unsolicited_response_pdu_handler_func (const gchar* prefix, const gchar* rhs, const gchar* pdu, gpointer self);
static void fso_gsm_at_unsolicited_response_handler_real_plusCALA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
GType fso_gsm_channel_get_type (void) G_GNUC_CONST;
GType fso_gsm_modem_status_get_type (void) G_GNUC_CONST;
GType fso_gsm_modem_network_status_get_type (void) G_GNUC_CONST;
gpointer fso_gsm_at_command_sequence_ref (gpointer instance);
void fso_gsm_at_command_sequence_unref (gpointer instance);
GParamSpec* fso_gsm_param_spec_at_command_sequence (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_gsm_value_set_at_command_sequence (GValue* value, gpointer v_object);
void fso_gsm_value_take_at_command_sequence (GValue* value, gpointer v_object);
gpointer fso_gsm_value_get_at_command_sequence (const GValue* value);
GType fso_gsm_at_command_sequence_get_type (void) G_GNUC_CONST;
GType fso_gsm_at_command_queue_command_get_type (void) G_GNUC_CONST;
GQuark fso_gsm_at_command_error_quark (void);
GType fso_gsm_constants_at_response_get_type (void) G_GNUC_CONST;
GType fso_gsm_at_command_get_type (void) G_GNUC_CONST;
GType fso_gsm_modem_data_get_type (void) G_GNUC_CONST;
GType fso_gsm_call_info_get_type (void) G_GNUC_CONST;
GType fso_gsm_call_handler_get_type (void) G_GNUC_CONST;
gpointer wrap_hex_pdu_ref (gpointer instance);
void wrap_hex_pdu_unref (gpointer instance);
GParamSpec* param_spec_wrap_hex_pdu (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_wrap_hex_pdu (GValue* value, gpointer v_object);
void value_take_wrap_hex_pdu (GValue* value, gpointer v_object);
gpointer value_get_wrap_hex_pdu (const GValue* value);
GType wrap_hex_pdu_get_type (void) G_GNUC_CONST;
GType fso_gsm_isms_storage_get_type (void) G_GNUC_CONST;
GType fso_gsm_sms_handler_get_type (void) G_GNUC_CONST;
GType fso_gsm_phonebook_storage_get_type (void) G_GNUC_CONST;
GType fso_gsm_phonebook_handler_get_type (void) G_GNUC_CONST;
GType fso_gsm_watch_dog_get_type (void) G_GNUC_CONST;
gpointer fso_gsm_route_info_ref (gpointer instance);
void fso_gsm_route_info_unref (gpointer instance);
GParamSpec* fso_gsm_param_spec_route_info (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_gsm_value_set_route_info (GValue* value, gpointer v_object);
void fso_gsm_value_take_route_info (GValue* value, gpointer v_object);
gpointer fso_gsm_value_get_route_info (const GValue* value);
GType fso_gsm_route_info_get_type (void) G_GNUC_CONST;
GType fso_gsm_ipdp_handler_get_type (void) G_GNUC_CONST;
GType fso_gsm_modem_get_type (void) G_GNUC_CONST;
gpointer fso_gsm_modem_theDevice (FsoGsmModem* self, GType t_type, GBoxedCopyFunc t_dup_func, GDestroyNotify t_destroy_func);
static void fso_gsm_at_unsolicited_response_handler_real_plusCCWA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
FsoGsmCallHandler* fso_gsm_modem_get_callhandler (FsoGsmModem* self);
void fso_gsm_call_handler_handleIncomingCall (FsoGsmCallHandler* self, FsoGsmCallInfo* call_info);
FsoGsmCallInfo* fso_gsm_call_info_new_with_ctype (const gchar* ctype);
FsoGsmCallInfo* fso_gsm_call_info_construct_with_ctype (GType object_type, const gchar* ctype);
static void fso_gsm_at_unsolicited_response_handler_real_plusCGEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void fso_gsm_at_unsolicited_response_handler_real_plusCGREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
void fso_gsm_triggerUpdateNetworkStatus (GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_gsm_triggerUpdateNetworkStatus_finish (GAsyncResult* _res_);
static void fso_gsm_at_unsolicited_response_handler_real_plusCIEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
gpointer fso_gsm_modem_createAtCommand (FsoGsmModem* self, GType t_type, GBoxedCopyFunc t_dup_func, GDestroyNotify t_destroy_func, const gchar* command);
GType fso_gsm_abstract_at_command_get_type (void) G_GNUC_CONST;
GType fso_gsm_two_params_at_command_get_type (void) G_GNUC_CONST;
GType fso_gsm_plus_ciev_get_type (void) G_GNUC_CONST;
FsoGsmConstantsAtResponse fso_gsm_abstract_at_command_validateUrc (FsoGsmAbstractAtCommand* self, const gchar* response);
static void fso_gsm_at_unsolicited_response_handler_real_plusCLIP (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void fso_gsm_at_unsolicited_response_handler_real_plusCMTI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
GType fso_gsm_plus_cmti_get_type (void) G_GNUC_CONST;
FsoGsmSmsHandler* fso_gsm_modem_get_smshandler (FsoGsmModem* self);
void fso_gsm_sms_handler_handleIncomingSmsOnSim (FsoGsmSmsHandler* self, guint index, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_gsm_sms_handler_handleIncomingSmsOnSim_finish (FsoGsmSmsHandler* self, GAsyncResult* _res_);
static void fso_gsm_at_unsolicited_response_handler_real_plusCREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void fso_gsm_at_unsolicited_response_handler_real_plusCRING (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void fso_gsm_at_unsolicited_response_handler_real_plusCSSI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
GType fso_gsm_simple_at_command_get_type (void) G_GNUC_CONST;
GType fso_gsm_plus_cssi_get_type (void) G_GNUC_CONST;
void fso_gsm_call_handler_addSupplementaryInformation (FsoGsmCallHandler* self, const gchar* direction, const gchar* info);
gpointer fso_gsm_constants_ref (gpointer instance);
void fso_gsm_constants_unref (gpointer instance);
GParamSpec* fso_gsm_param_spec_constants (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_gsm_value_set_constants (GValue* value, gpointer v_object);
void fso_gsm_value_take_constants (GValue* value, gpointer v_object);
gpointer fso_gsm_value_get_constants (const GValue* value);
GType fso_gsm_constants_get_type (void) G_GNUC_CONST;
FsoGsmConstants* fso_gsm_constants_instance (void);
gchar* fso_gsm_constants_callDirectionToString (FsoGsmConstants* self, gint code);
gchar* fso_gsm_constants_cssiCodeToString (FsoGsmConstants* self, gint code);
static void fso_gsm_at_unsolicited_response_handler_real_plusCSSU (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
GType fso_gsm_plus_cssu_get_type (void) G_GNUC_CONST;
gchar* fso_gsm_constants_cssuCodeToString (FsoGsmConstants* self, gint code);
static void fso_gsm_at_unsolicited_response_handler_real_plusCTZV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
gint fso_gsm_constants_ctzvToTimeZone (FsoGsmConstants* self, gint ctzv);
FsoGsmModemData* fso_gsm_modem_data (FsoGsmModem* self);
gpointer fso_gsm_phonebook_params_ref (gpointer instance);
void fso_gsm_phonebook_params_unref (gpointer instance);
GParamSpec* fso_gsm_param_spec_phonebook_params (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_gsm_value_set_phonebook_params (GValue* value, gpointer v_object);
void fso_gsm_value_take_phonebook_params (GValue* value, gpointer v_object);
gpointer fso_gsm_value_get_phonebook_params (const GValue* value);
GType fso_gsm_phonebook_params_get_type (void) G_GNUC_CONST;
gpointer fso_gsm_context_params_ref (gpointer instance);
void fso_gsm_context_params_unref (gpointer instance);
GParamSpec* fso_gsm_param_spec_context_params (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_gsm_value_set_context_params (GValue* value, gpointer v_object);
void fso_gsm_value_take_context_params (GValue* value, gpointer v_object);
gpointer fso_gsm_value_get_context_params (const GValue* value);
GType fso_gsm_context_params_get_type (void) G_GNUC_CONST;
gpointer fso_gsm_network_time_report_ref (gpointer instance);
void fso_gsm_network_time_report_unref (gpointer instance);
GParamSpec* fso_gsm_param_spec_network_time_report (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void fso_gsm_value_set_network_time_report (GValue* value, gpointer v_object);
void fso_gsm_value_take_network_time_report (GValue* value, gpointer v_object);
gpointer fso_gsm_value_get_network_time_report (const GValue* value);
GType fso_gsm_network_time_report_get_type (void) G_GNUC_CONST;
void fso_gsm_network_time_report_setZone (FsoGsmNetworkTimeReport* self, gint zone);
static void fso_gsm_at_unsolicited_response_handler_real_plusCUSD (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
GType fso_gsm_plus_cusd_get_type (void) G_GNUC_CONST;
GType fso_gsm_plus_cusd_mode_get_type (void) G_GNUC_CONST;
static void fso_gsm_at_unsolicited_response_handler_real_no_carrier (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs);
static void fso_gsm_at_unsolicited_response_handler_real_plusCDS (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
GType fso_gsm_plus_cds_get_type (void) G_GNUC_CONST;
FsoGsmConstantsAtResponse fso_gsm_abstract_at_command_validateUrcPdu (FsoGsmAbstractAtCommand* self, gchar** response, int response_length1);
void fso_gsm_sms_handler_handleIncomingSmsReport (FsoGsmSmsHandler* self, const gchar* hexpdu, gint tpdulen, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_gsm_sms_handler_handleIncomingSmsReport_finish (FsoGsmSmsHandler* self, GAsyncResult* _res_);
static void fso_gsm_at_unsolicited_response_handler_real_plusCBM (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
GType fso_gsm_plus_cbm_get_type (void) G_GNUC_CONST;
static void _g_free0_ (gpointer var);
static void _g_variant_unref0_ (gpointer var);
static void fso_gsm_at_unsolicited_response_handler_real_plusCMT (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu);
GType fso_gsm_plus_cmt_get_type (void) G_GNUC_CONST;
void fso_gsm_sms_handler_handleIncomingSms (FsoGsmSmsHandler* self, const gchar* hexpdu, gint tpdulen, GAsyncReadyCallback _callback_, gpointer _user_data_);
void fso_gsm_sms_handler_handleIncomingSms_finish (FsoGsmSmsHandler* self, GAsyncResult* _res_);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);


UnsolicitedResponseHandlerFuncWrapper* unsolicited_response_handler_func_wrapper_construct (GType object_type) {
	UnsolicitedResponseHandlerFuncWrapper* self = NULL;
	self = (UnsolicitedResponseHandlerFuncWrapper*) g_type_create_instance (object_type);
	return self;
}


UnsolicitedResponseHandlerFuncWrapper* unsolicited_response_handler_func_wrapper_new (void) {
	return unsolicited_response_handler_func_wrapper_construct (TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER);
}


static void value_unsolicited_response_handler_func_wrapper_init (GValue* value) {
	value->data[0].v_pointer = NULL;
}


static void value_unsolicited_response_handler_func_wrapper_free_value (GValue* value) {
	if (value->data[0].v_pointer) {
		unsolicited_response_handler_func_wrapper_unref (value->data[0].v_pointer);
	}
}


static void value_unsolicited_response_handler_func_wrapper_copy_value (const GValue* src_value, GValue* dest_value) {
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = unsolicited_response_handler_func_wrapper_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}


static gpointer value_unsolicited_response_handler_func_wrapper_peek_pointer (const GValue* value) {
	return value->data[0].v_pointer;
}


static gchar* value_unsolicited_response_handler_func_wrapper_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	if (collect_values[0].v_pointer) {
		UnsolicitedResponseHandlerFuncWrapper* object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = unsolicited_response_handler_func_wrapper_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}


static gchar* value_unsolicited_response_handler_func_wrapper_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	UnsolicitedResponseHandlerFuncWrapper** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = unsolicited_response_handler_func_wrapper_ref (value->data[0].v_pointer);
	}
	return NULL;
}


GParamSpec* param_spec_unsolicited_response_handler_func_wrapper (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecUnsolicitedResponseHandlerFuncWrapper* spec;
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}


gpointer value_get_unsolicited_response_handler_func_wrapper (const GValue* value) {
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER), NULL);
	return value->data[0].v_pointer;
}


void value_set_unsolicited_response_handler_func_wrapper (GValue* value, gpointer v_object) {
	UnsolicitedResponseHandlerFuncWrapper* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		unsolicited_response_handler_func_wrapper_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		unsolicited_response_handler_func_wrapper_unref (old);
	}
}


void value_take_unsolicited_response_handler_func_wrapper (GValue* value, gpointer v_object) {
	UnsolicitedResponseHandlerFuncWrapper* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		unsolicited_response_handler_func_wrapper_unref (old);
	}
}


static void unsolicited_response_handler_func_wrapper_class_init (UnsolicitedResponseHandlerFuncWrapperClass * klass) {
	unsolicited_response_handler_func_wrapper_parent_class = g_type_class_peek_parent (klass);
	UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER_CLASS (klass)->finalize = unsolicited_response_handler_func_wrapper_finalize;
}


static void unsolicited_response_handler_func_wrapper_instance_init (UnsolicitedResponseHandlerFuncWrapper * self) {
	self->ref_count = 1;
}


static void unsolicited_response_handler_func_wrapper_finalize (UnsolicitedResponseHandlerFuncWrapper* obj) {
	UnsolicitedResponseHandlerFuncWrapper * self;
	self = UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER (obj);
	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
	self->func = NULL;
	self->func_target = NULL;
	self->func_target_destroy_notify = NULL;
}


GType unsolicited_response_handler_func_wrapper_get_type (void) {
	static volatile gsize unsolicited_response_handler_func_wrapper_type_id__volatile = 0;
	if (g_once_init_enter (&unsolicited_response_handler_func_wrapper_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_unsolicited_response_handler_func_wrapper_init, value_unsolicited_response_handler_func_wrapper_free_value, value_unsolicited_response_handler_func_wrapper_copy_value, value_unsolicited_response_handler_func_wrapper_peek_pointer, "p", value_unsolicited_response_handler_func_wrapper_collect_value, "p", value_unsolicited_response_handler_func_wrapper_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (UnsolicitedResponseHandlerFuncWrapperClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unsolicited_response_handler_func_wrapper_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UnsolicitedResponseHandlerFuncWrapper), 0, (GInstanceInitFunc) unsolicited_response_handler_func_wrapper_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType unsolicited_response_handler_func_wrapper_type_id;
		unsolicited_response_handler_func_wrapper_type_id = g_type_register_fundamental (g_type_fundamental_next (), "UnsolicitedResponseHandlerFuncWrapper", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&unsolicited_response_handler_func_wrapper_type_id__volatile, unsolicited_response_handler_func_wrapper_type_id);
	}
	return unsolicited_response_handler_func_wrapper_type_id__volatile;
}


gpointer unsolicited_response_handler_func_wrapper_ref (gpointer instance) {
	UnsolicitedResponseHandlerFuncWrapper* self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}


void unsolicited_response_handler_func_wrapper_unref (gpointer instance) {
	UnsolicitedResponseHandlerFuncWrapper* self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}


UnsolicitedResponsePduHandlerFuncWrapper* unsolicited_response_pdu_handler_func_wrapper_construct (GType object_type) {
	UnsolicitedResponsePduHandlerFuncWrapper* self = NULL;
	self = (UnsolicitedResponsePduHandlerFuncWrapper*) g_type_create_instance (object_type);
	return self;
}


UnsolicitedResponsePduHandlerFuncWrapper* unsolicited_response_pdu_handler_func_wrapper_new (void) {
	return unsolicited_response_pdu_handler_func_wrapper_construct (TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER);
}


static void value_unsolicited_response_pdu_handler_func_wrapper_init (GValue* value) {
	value->data[0].v_pointer = NULL;
}


static void value_unsolicited_response_pdu_handler_func_wrapper_free_value (GValue* value) {
	if (value->data[0].v_pointer) {
		unsolicited_response_pdu_handler_func_wrapper_unref (value->data[0].v_pointer);
	}
}


static void value_unsolicited_response_pdu_handler_func_wrapper_copy_value (const GValue* src_value, GValue* dest_value) {
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = unsolicited_response_pdu_handler_func_wrapper_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}


static gpointer value_unsolicited_response_pdu_handler_func_wrapper_peek_pointer (const GValue* value) {
	return value->data[0].v_pointer;
}


static gchar* value_unsolicited_response_pdu_handler_func_wrapper_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	if (collect_values[0].v_pointer) {
		UnsolicitedResponsePduHandlerFuncWrapper* object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = unsolicited_response_pdu_handler_func_wrapper_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}


static gchar* value_unsolicited_response_pdu_handler_func_wrapper_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	UnsolicitedResponsePduHandlerFuncWrapper** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = unsolicited_response_pdu_handler_func_wrapper_ref (value->data[0].v_pointer);
	}
	return NULL;
}


GParamSpec* param_spec_unsolicited_response_pdu_handler_func_wrapper (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecUnsolicitedResponsePduHandlerFuncWrapper* spec;
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}


gpointer value_get_unsolicited_response_pdu_handler_func_wrapper (const GValue* value) {
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER), NULL);
	return value->data[0].v_pointer;
}


void value_set_unsolicited_response_pdu_handler_func_wrapper (GValue* value, gpointer v_object) {
	UnsolicitedResponsePduHandlerFuncWrapper* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		unsolicited_response_pdu_handler_func_wrapper_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		unsolicited_response_pdu_handler_func_wrapper_unref (old);
	}
}


void value_take_unsolicited_response_pdu_handler_func_wrapper (GValue* value, gpointer v_object) {
	UnsolicitedResponsePduHandlerFuncWrapper* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		unsolicited_response_pdu_handler_func_wrapper_unref (old);
	}
}


static void unsolicited_response_pdu_handler_func_wrapper_class_init (UnsolicitedResponsePduHandlerFuncWrapperClass * klass) {
	unsolicited_response_pdu_handler_func_wrapper_parent_class = g_type_class_peek_parent (klass);
	UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER_CLASS (klass)->finalize = unsolicited_response_pdu_handler_func_wrapper_finalize;
}


static void unsolicited_response_pdu_handler_func_wrapper_instance_init (UnsolicitedResponsePduHandlerFuncWrapper * self) {
	self->ref_count = 1;
}


static void unsolicited_response_pdu_handler_func_wrapper_finalize (UnsolicitedResponsePduHandlerFuncWrapper* obj) {
	UnsolicitedResponsePduHandlerFuncWrapper * self;
	self = UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER (obj);
	(self->func_target_destroy_notify == NULL) ? NULL : (self->func_target_destroy_notify (self->func_target), NULL);
	self->func = NULL;
	self->func_target = NULL;
	self->func_target_destroy_notify = NULL;
}


GType unsolicited_response_pdu_handler_func_wrapper_get_type (void) {
	static volatile gsize unsolicited_response_pdu_handler_func_wrapper_type_id__volatile = 0;
	if (g_once_init_enter (&unsolicited_response_pdu_handler_func_wrapper_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_unsolicited_response_pdu_handler_func_wrapper_init, value_unsolicited_response_pdu_handler_func_wrapper_free_value, value_unsolicited_response_pdu_handler_func_wrapper_copy_value, value_unsolicited_response_pdu_handler_func_wrapper_peek_pointer, "p", value_unsolicited_response_pdu_handler_func_wrapper_collect_value, "p", value_unsolicited_response_pdu_handler_func_wrapper_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (UnsolicitedResponsePduHandlerFuncWrapperClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unsolicited_response_pdu_handler_func_wrapper_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UnsolicitedResponsePduHandlerFuncWrapper), 0, (GInstanceInitFunc) unsolicited_response_pdu_handler_func_wrapper_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType unsolicited_response_pdu_handler_func_wrapper_type_id;
		unsolicited_response_pdu_handler_func_wrapper_type_id = g_type_register_fundamental (g_type_fundamental_next (), "UnsolicitedResponsePduHandlerFuncWrapper", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&unsolicited_response_pdu_handler_func_wrapper_type_id__volatile, unsolicited_response_pdu_handler_func_wrapper_type_id);
	}
	return unsolicited_response_pdu_handler_func_wrapper_type_id__volatile;
}


gpointer unsolicited_response_pdu_handler_func_wrapper_ref (gpointer instance) {
	UnsolicitedResponsePduHandlerFuncWrapper* self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}


void unsolicited_response_pdu_handler_func_wrapper_unref (gpointer instance) {
	UnsolicitedResponsePduHandlerFuncWrapper* self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}


gboolean fso_gsm_unsolicited_response_handler_dispatch (FsoGsmUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	g_return_val_if_fail (self != NULL, FALSE);
	return FSO_GSM_UNSOLICITED_RESPONSE_HANDLER_GET_INTERFACE (self)->dispatch (self, prefix, rhs, pdu);
}


static void fso_gsm_unsolicited_response_handler_base_init (FsoGsmUnsolicitedResponseHandlerIface * iface) {
	static gboolean initialized = FALSE;
	if (!initialized) {
		initialized = TRUE;
	}
}


/**
 * Unsolicited Interface, Base Class, and At Version
 **/
GType fso_gsm_unsolicited_response_handler_get_type (void) {
	static volatile gsize fso_gsm_unsolicited_response_handler_type_id__volatile = 0;
	if (g_once_init_enter (&fso_gsm_unsolicited_response_handler_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (FsoGsmUnsolicitedResponseHandlerIface), (GBaseInitFunc) fso_gsm_unsolicited_response_handler_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType fso_gsm_unsolicited_response_handler_type_id;
		fso_gsm_unsolicited_response_handler_type_id = g_type_register_static (G_TYPE_INTERFACE, "FsoGsmUnsolicitedResponseHandler", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (fso_gsm_unsolicited_response_handler_type_id, FSO_FRAMEWORK_TYPE_ABSTRACT_OBJECT);
		g_once_init_leave (&fso_gsm_unsolicited_response_handler_type_id__volatile, fso_gsm_unsolicited_response_handler_type_id);
	}
	return fso_gsm_unsolicited_response_handler_type_id__volatile;
}


static gchar* fso_gsm_base_unsolicited_response_handler_real_repr (FsoFrameworkAbstractObject* base) {
	FsoGsmBaseUnsolicitedResponseHandler * self;
	gchar* result = NULL;
	gchar* _tmp0_;
	self = (FsoGsmBaseUnsolicitedResponseHandler*) base;
	_tmp0_ = g_strdup ("");
	result = _tmp0_;
	return result;
}


static const gchar* string_to_string (const gchar* self) {
	const gchar* result = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	result = self;
	return result;
}


void fso_gsm_base_unsolicited_response_handler_registerUrc (FsoGsmBaseUnsolicitedResponseHandler* self, const gchar* prefix, UnsolicitedResponseHandlerFunc func, void* func_target) {
	FsoFrameworkLogger* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_;
	gboolean _tmp5_ = FALSE;
	GeeHashMap* _tmp6_;
	const gchar* _tmp7_;
	UnsolicitedResponseHandlerFunc _tmp8_;
	void* _tmp8__target;
	UnsolicitedResponseHandlerFuncWrapper* _tmp9_ = NULL;
	UnsolicitedResponseHandlerFuncWrapper* _tmp10_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (prefix != NULL);
	_tmp0_ = ((FsoFrameworkAbstractObject*) self)->logger;
	_tmp1_ = prefix;
	_tmp2_ = string_to_string (_tmp1_);
	_tmp3_ = g_strconcat ("Registering URC '", _tmp2_, "'", NULL);
	_tmp4_ = _tmp3_;
	_tmp5_ = fso_framework_logger_debug (_tmp0_, _tmp4_);
	g_assert (_tmp5_);
	_g_free0 (_tmp4_);
	_tmp6_ = self->priv->urcs;
	_tmp7_ = prefix;
	_tmp8_ = func;
	_tmp8__target = func_target;
	_tmp9_ = unsolicited_response_handler_func_wrapper_new ();
	(_tmp9_->func_target_destroy_notify == NULL) ? NULL : (_tmp9_->func_target_destroy_notify (_tmp9_->func_target), NULL);
	_tmp9_->func = NULL;
	_tmp9_->func_target = NULL;
	_tmp9_->func_target_destroy_notify = NULL;
	_tmp9_->func = _tmp8_;
	_tmp9_->func_target = _tmp8__target;
	_tmp9_->func_target_destroy_notify = NULL;
	_tmp10_ = _tmp9_;
	gee_abstract_map_set ((GeeAbstractMap*) _tmp6_, _tmp7_, _tmp10_);
	_unsolicited_response_handler_func_wrapper_unref0 (_tmp10_);
}


void fso_gsm_base_unsolicited_response_handler_registerUrcPdu (FsoGsmBaseUnsolicitedResponseHandler* self, const gchar* prefix, UnsolicitedResponsePduHandlerFunc func, void* func_target) {
	GeeHashMap* _tmp0_;
	const gchar* _tmp1_;
	UnsolicitedResponsePduHandlerFunc _tmp2_;
	void* _tmp2__target;
	UnsolicitedResponsePduHandlerFuncWrapper* _tmp3_ = NULL;
	UnsolicitedResponsePduHandlerFuncWrapper* _tmp4_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (prefix != NULL);
	_tmp0_ = self->priv->urcpdus;
	_tmp1_ = prefix;
	_tmp2_ = func;
	_tmp2__target = func_target;
	_tmp3_ = unsolicited_response_pdu_handler_func_wrapper_new ();
	(_tmp3_->func_target_destroy_notify == NULL) ? NULL : (_tmp3_->func_target_destroy_notify (_tmp3_->func_target), NULL);
	_tmp3_->func = NULL;
	_tmp3_->func_target = NULL;
	_tmp3_->func_target_destroy_notify = NULL;
	_tmp3_->func = _tmp2_;
	_tmp3_->func_target = _tmp2__target;
	_tmp3_->func_target_destroy_notify = NULL;
	_tmp4_ = _tmp3_;
	gee_abstract_map_set ((GeeAbstractMap*) _tmp0_, _tmp1_, _tmp4_);
	_unsolicited_response_pdu_handler_func_wrapper_unref0 (_tmp4_);
}


static gboolean fso_gsm_base_unsolicited_response_handler_real_dispatch (FsoGsmUnsolicitedResponseHandler* base, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	FsoGsmBaseUnsolicitedResponseHandler * self;
	gboolean result = FALSE;
	FsoFrameworkLogger* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_;
	gboolean _tmp7_ = FALSE;
	const gchar* _tmp8_;
	self = (FsoGsmBaseUnsolicitedResponseHandler*) base;
	g_return_val_if_fail (prefix != NULL, FALSE);
	g_return_val_if_fail (rhs != NULL, FALSE);
	_tmp0_ = ((FsoFrameworkAbstractObject*) self)->logger;
	_tmp1_ = prefix;
	_tmp2_ = string_to_string (_tmp1_);
	_tmp3_ = rhs;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = g_strconcat ("Dispatching AT unsolicited '", _tmp2_, "', '", _tmp4_, "'", NULL);
	_tmp6_ = _tmp5_;
	_tmp7_ = fso_framework_logger_debug (_tmp0_, _tmp6_);
	g_assert (_tmp7_);
	_g_free0 (_tmp6_);
	_tmp8_ = pdu;
	if (_tmp8_ == NULL) {
		GeeHashMap* _tmp9_;
		const gchar* _tmp10_;
		gpointer _tmp11_ = NULL;
		UnsolicitedResponseHandlerFuncWrapper* urcwrapper;
		UnsolicitedResponseHandlerFuncWrapper* _tmp12_;
		_tmp9_ = self->priv->urcs;
		_tmp10_ = prefix;
		_tmp11_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp9_, _tmp10_);
		urcwrapper = (UnsolicitedResponseHandlerFuncWrapper*) _tmp11_;
		_tmp12_ = urcwrapper;
		if (_tmp12_ != NULL) {
			UnsolicitedResponseHandlerFuncWrapper* _tmp13_;
			UnsolicitedResponseHandlerFunc _tmp14_;
			void* _tmp14__target;
			const gchar* _tmp15_;
			const gchar* _tmp16_;
			_tmp13_ = urcwrapper;
			_tmp14_ = _tmp13_->func;
			_tmp14__target = _tmp13_->func_target;
			_tmp15_ = prefix;
			_tmp16_ = rhs;
			_tmp14_ (_tmp15_, _tmp16_, _tmp14__target);
			result = TRUE;
			_unsolicited_response_handler_func_wrapper_unref0 (urcwrapper);
			return result;
		} else {
			result = FALSE;
			_unsolicited_response_handler_func_wrapper_unref0 (urcwrapper);
			return result;
		}
		_unsolicited_response_handler_func_wrapper_unref0 (urcwrapper);
	} else {
		GeeHashMap* _tmp17_;
		const gchar* _tmp18_;
		gpointer _tmp19_ = NULL;
		UnsolicitedResponsePduHandlerFuncWrapper* urcwrapper;
		UnsolicitedResponsePduHandlerFuncWrapper* _tmp20_;
		_tmp17_ = self->priv->urcpdus;
		_tmp18_ = prefix;
		_tmp19_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp17_, _tmp18_);
		urcwrapper = (UnsolicitedResponsePduHandlerFuncWrapper*) _tmp19_;
		_tmp20_ = urcwrapper;
		if (_tmp20_ != NULL) {
			UnsolicitedResponsePduHandlerFuncWrapper* _tmp21_;
			UnsolicitedResponsePduHandlerFunc _tmp22_;
			void* _tmp22__target;
			const gchar* _tmp23_;
			const gchar* _tmp24_;
			const gchar* _tmp25_;
			_tmp21_ = urcwrapper;
			_tmp22_ = _tmp21_->func;
			_tmp22__target = _tmp21_->func_target;
			_tmp23_ = prefix;
			_tmp24_ = rhs;
			_tmp25_ = pdu;
			_tmp22_ (_tmp23_, _tmp24_, _tmp25_, _tmp22__target);
			result = TRUE;
			_unsolicited_response_pdu_handler_func_wrapper_unref0 (urcwrapper);
			return result;
		} else {
			result = FALSE;
			_unsolicited_response_pdu_handler_func_wrapper_unref0 (urcwrapper);
			return result;
		}
		_unsolicited_response_pdu_handler_func_wrapper_unref0 (urcwrapper);
	}
}


FsoGsmBaseUnsolicitedResponseHandler* fso_gsm_base_unsolicited_response_handler_construct (GType object_type) {
	FsoGsmBaseUnsolicitedResponseHandler * self = NULL;
	self = (FsoGsmBaseUnsolicitedResponseHandler*) fso_framework_abstract_object_construct (object_type);
	return self;
}


FsoGsmBaseUnsolicitedResponseHandler* fso_gsm_base_unsolicited_response_handler_new (void) {
	return fso_gsm_base_unsolicited_response_handler_construct (FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER);
}


static GObject * fso_gsm_base_unsolicited_response_handler_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
	GObject * obj;
	GObjectClass * parent_class;
	FsoGsmBaseUnsolicitedResponseHandler * self;
	GeeHashMap* _tmp0_;
	GeeHashMap* _tmp1_;
	parent_class = G_OBJECT_CLASS (fso_gsm_base_unsolicited_response_handler_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER (obj);
	_tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, TYPE_UNSOLICITED_RESPONSE_HANDLER_FUNC_WRAPPER, (GBoxedCopyFunc) unsolicited_response_handler_func_wrapper_ref, unsolicited_response_handler_func_wrapper_unref, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->urcs);
	self->priv->urcs = _tmp0_;
	_tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, TYPE_UNSOLICITED_RESPONSE_PDU_HANDLER_FUNC_WRAPPER, (GBoxedCopyFunc) unsolicited_response_pdu_handler_func_wrapper_ref, unsolicited_response_pdu_handler_func_wrapper_unref, NULL, NULL, NULL);
	_g_object_unref0 (self->priv->urcpdus);
	self->priv->urcpdus = _tmp1_;
	return obj;
}


static void fso_gsm_base_unsolicited_response_handler_class_init (FsoGsmBaseUnsolicitedResponseHandlerClass * klass) {
	fso_gsm_base_unsolicited_response_handler_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (FsoGsmBaseUnsolicitedResponseHandlerPrivate));
	FSO_FRAMEWORK_ABSTRACT_OBJECT_CLASS (klass)->repr = fso_gsm_base_unsolicited_response_handler_real_repr;
	G_OBJECT_CLASS (klass)->constructor = fso_gsm_base_unsolicited_response_handler_constructor;
	G_OBJECT_CLASS (klass)->finalize = fso_gsm_base_unsolicited_response_handler_finalize;
}


static void fso_gsm_base_unsolicited_response_handler_fso_gsm_unsolicited_response_handler_interface_init (FsoGsmUnsolicitedResponseHandlerIface * iface) {
	fso_gsm_base_unsolicited_response_handler_fso_gsm_unsolicited_response_handler_parent_iface = g_type_interface_peek_parent (iface);
	iface->dispatch = (gboolean (*)(FsoGsmUnsolicitedResponseHandler*, const gchar*, const gchar*, const gchar*)) fso_gsm_base_unsolicited_response_handler_real_dispatch;
}


static void fso_gsm_base_unsolicited_response_handler_instance_init (FsoGsmBaseUnsolicitedResponseHandler * self) {
	self->priv = FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER_GET_PRIVATE (self);
}


static void fso_gsm_base_unsolicited_response_handler_finalize (GObject* obj) {
	FsoGsmBaseUnsolicitedResponseHandler * self;
	self = FSO_GSM_BASE_UNSOLICITED_RESPONSE_HANDLER (obj);
	_g_object_unref0 (self->priv->urcs);
	_g_object_unref0 (self->priv->urcpdus);
	G_OBJECT_CLASS (fso_gsm_base_unsolicited_response_handler_parent_class)->finalize (obj);
}


GType fso_gsm_base_unsolicited_response_handler_get_type (void) {
	static volatile gsize fso_gsm_base_unsolicited_response_handler_type_id__volatile = 0;
	if (g_once_init_enter (&fso_gsm_base_unsolicited_response_handler_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (FsoGsmBaseUnsolicitedResponseHandlerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) fso_gsm_base_unsolicited_response_handler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FsoGsmBaseUnsolicitedResponseHandler), 0, (GInstanceInitFunc) fso_gsm_base_unsolicited_response_handler_instance_init, NULL };
		static const GInterfaceInfo fso_gsm_unsolicited_response_handler_info = { (GInterfaceInitFunc) fso_gsm_base_unsolicited_response_handler_fso_gsm_unsolicited_response_handler_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType fso_gsm_base_unsolicited_response_handler_type_id;
		fso_gsm_base_unsolicited_response_handler_type_id = g_type_register_static (FSO_FRAMEWORK_TYPE_ABSTRACT_OBJECT, "FsoGsmBaseUnsolicitedResponseHandler", &g_define_type_info, 0);
		g_type_add_interface_static (fso_gsm_base_unsolicited_response_handler_type_id, FSO_GSM_TYPE_UNSOLICITED_RESPONSE_HANDLER, &fso_gsm_unsolicited_response_handler_info);
		g_once_init_leave (&fso_gsm_base_unsolicited_response_handler_type_id__volatile, fso_gsm_base_unsolicited_response_handler_type_id);
	}
	return fso_gsm_base_unsolicited_response_handler_type_id__volatile;
}


static void _fso_gsm_at_unsolicited_response_handler_plusCALA_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCALA (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCCWA_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCCWA (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCGEV_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCGEV (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCGREG_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCGREG (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCIEV_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCIEV (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCLIP_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCLIP (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCMTI_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCMTI (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCREG_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCREG (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCRING_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCRING (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCSSI_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCSSI (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCSSU_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCSSU (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCTZV_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCTZV (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCUSD_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCUSD (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_no_carrier_unsolicited_response_handler_func (const gchar* prefix, const gchar* rhs, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_no_carrier (self, prefix, rhs);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCBM_unsolicited_response_pdu_handler_func (const gchar* prefix, const gchar* rhs, const gchar* pdu, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCBM (self, prefix, rhs, pdu);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCDS_unsolicited_response_pdu_handler_func (const gchar* prefix, const gchar* rhs, const gchar* pdu, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCDS (self, prefix, rhs, pdu);
}


static void _fso_gsm_at_unsolicited_response_handler_plusCMT_unsolicited_response_pdu_handler_func (const gchar* prefix, const gchar* rhs, const gchar* pdu, gpointer self) {
	fso_gsm_at_unsolicited_response_handler_plusCMT (self, prefix, rhs, pdu);
}


FsoGsmAtUnsolicitedResponseHandler* fso_gsm_at_unsolicited_response_handler_construct (GType object_type) {
	FsoGsmAtUnsolicitedResponseHandler * self = NULL;
	self = (FsoGsmAtUnsolicitedResponseHandler*) fso_gsm_base_unsolicited_response_handler_construct (object_type);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CALA", _fso_gsm_at_unsolicited_response_handler_plusCALA_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CCWA", _fso_gsm_at_unsolicited_response_handler_plusCCWA_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CGEV", _fso_gsm_at_unsolicited_response_handler_plusCGEV_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CGREG", _fso_gsm_at_unsolicited_response_handler_plusCGREG_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CIEV", _fso_gsm_at_unsolicited_response_handler_plusCIEV_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CLIP", _fso_gsm_at_unsolicited_response_handler_plusCLIP_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CMTI", _fso_gsm_at_unsolicited_response_handler_plusCMTI_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CREG", _fso_gsm_at_unsolicited_response_handler_plusCREG_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CRING", _fso_gsm_at_unsolicited_response_handler_plusCRING_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CSSI", _fso_gsm_at_unsolicited_response_handler_plusCSSI_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CSSU", _fso_gsm_at_unsolicited_response_handler_plusCSSU_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CTZV", _fso_gsm_at_unsolicited_response_handler_plusCTZV_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CUSD", _fso_gsm_at_unsolicited_response_handler_plusCUSD_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrc ((FsoGsmBaseUnsolicitedResponseHandler*) self, "NO CARRIER", _fso_gsm_at_unsolicited_response_handler_no_carrier_unsolicited_response_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrcPdu ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CBM", _fso_gsm_at_unsolicited_response_handler_plusCBM_unsolicited_response_pdu_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrcPdu ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CDS", _fso_gsm_at_unsolicited_response_handler_plusCDS_unsolicited_response_pdu_handler_func, self);
	fso_gsm_base_unsolicited_response_handler_registerUrcPdu ((FsoGsmBaseUnsolicitedResponseHandler*) self, "+CMT", _fso_gsm_at_unsolicited_response_handler_plusCMT_unsolicited_response_pdu_handler_func, self);
	return self;
}


FsoGsmAtUnsolicitedResponseHandler* fso_gsm_at_unsolicited_response_handler_new (void) {
	return fso_gsm_at_unsolicited_response_handler_construct (FSO_GSM_TYPE_AT_UNSOLICITED_RESPONSE_HANDLER);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCALA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FreeSmartphoneDeviceRealtimeClock* obj;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_theDevice (_tmp0_, FREE_SMARTPHONE_DEVICE_TYPE_REALTIME_CLOCK, (GBoxedCopyFunc) g_object_ref, g_object_unref);
	obj = (FreeSmartphoneDeviceRealtimeClock*) _tmp1_;
	g_signal_emit_by_name (obj, "alarm", 0);
	_g_object_unref0 (obj);
}


void fso_gsm_at_unsolicited_response_handler_plusCALA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCALA (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCCWA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	FsoGsmCallHandler* _tmp1_;
	FsoGsmCallHandler* _tmp2_;
	FsoGsmCallInfo* _tmp3_;
	FsoGsmCallInfo* _tmp4_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_get_callhandler (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = fso_gsm_call_info_new_with_ctype ("VOICE");
	_tmp4_ = _tmp3_;
	fso_gsm_call_handler_handleIncomingCall (_tmp2_, _tmp4_);
	_g_object_unref0 (_tmp4_);
}


void fso_gsm_at_unsolicited_response_handler_plusCCWA (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCCWA (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCGEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
}


void fso_gsm_at_unsolicited_response_handler_plusCGEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCGEV (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCGREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	fso_gsm_triggerUpdateNetworkStatus (NULL, NULL);
}


void fso_gsm_at_unsolicited_response_handler_plusCGREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCGREG (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCIEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCIEV* ciev;
	FsoGsmPlusCIEV* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_;
	FsoGsmConstantsAtResponse _tmp9_ = 0;
	gboolean _tmp10_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CIEV, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CIEV");
	ciev = (FsoGsmPlusCIEV*) _tmp1_;
	_tmp2_ = ciev;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = _tmp7_;
	_tmp9_ = fso_gsm_abstract_at_command_validateUrc ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp8_);
	_tmp10_ = _tmp9_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_g_free0 (_tmp8_);
	if (_tmp10_) {
		FsoFrameworkLogger* _tmp11_;
		FsoGsmPlusCIEV* _tmp12_;
		gconstpointer _tmp13_;
		gchar* _tmp14_ = NULL;
		gchar* _tmp15_;
		FsoGsmPlusCIEV* _tmp16_;
		gconstpointer _tmp17_;
		gchar* _tmp18_ = NULL;
		gchar* _tmp19_;
		gchar* _tmp20_ = NULL;
		gchar* _tmp21_;
		_tmp11_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp12_ = ciev;
		_tmp13_ = ((FsoGsmTwoParamsAtCommand*) _tmp12_)->value1;
		_tmp14_ = g_strdup_printf ("%i", GPOINTER_TO_INT (_tmp13_));
		_tmp15_ = _tmp14_;
		_tmp16_ = ciev;
		_tmp17_ = ((FsoGsmTwoParamsAtCommand*) _tmp16_)->value2;
		_tmp18_ = g_strdup_printf ("%i", GPOINTER_TO_INT (_tmp17_));
		_tmp19_ = _tmp18_;
		_tmp20_ = g_strconcat ("Received unhandled +CIEV ", _tmp15_, ", ", _tmp19_, NULL);
		_tmp21_ = _tmp20_;
		fso_framework_logger_warning (_tmp11_, _tmp21_);
		_g_free0 (_tmp21_);
		_g_free0 (_tmp19_);
		_g_free0 (_tmp15_);
	} else {
		FsoFrameworkLogger* _tmp22_;
		const gchar* _tmp23_;
		const gchar* _tmp24_ = NULL;
		gchar* _tmp25_ = NULL;
		gchar* _tmp26_;
		_tmp22_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp23_ = rhs;
		_tmp24_ = string_to_string (_tmp23_);
		_tmp25_ = g_strconcat ("Received invalid +CIEV message ", _tmp24_, ". Please report", NULL);
		_tmp26_ = _tmp25_;
		fso_framework_logger_warning (_tmp22_, _tmp26_);
		_g_free0 (_tmp26_);
	}
	_g_object_unref0 (ciev);
}


void fso_gsm_at_unsolicited_response_handler_plusCIEV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCIEV (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCLIP (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
}


void fso_gsm_at_unsolicited_response_handler_plusCLIP (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCLIP (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCMTI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCMTI* cmti;
	FsoGsmPlusCMTI* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_;
	FsoGsmConstantsAtResponse _tmp9_ = 0;
	gboolean _tmp10_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CMTI, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CMTI");
	cmti = (FsoGsmPlusCMTI*) _tmp1_;
	_tmp2_ = cmti;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = _tmp7_;
	_tmp9_ = fso_gsm_abstract_at_command_validateUrc ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp8_);
	_tmp10_ = _tmp9_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_g_free0 (_tmp8_);
	if (_tmp10_) {
		FsoGsmModem* _tmp11_;
		FsoGsmSmsHandler* _tmp12_;
		FsoGsmSmsHandler* _tmp13_;
		FsoGsmPlusCMTI* _tmp14_;
		gint _tmp15_;
		_tmp11_ = fso_gsm_theModem;
		_tmp12_ = fso_gsm_modem_get_smshandler (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = cmti;
		_tmp15_ = _tmp14_->index;
		fso_gsm_sms_handler_handleIncomingSmsOnSim (_tmp13_, (guint) _tmp15_, NULL, NULL);
	} else {
		FsoFrameworkLogger* _tmp16_;
		const gchar* _tmp17_;
		const gchar* _tmp18_ = NULL;
		gchar* _tmp19_ = NULL;
		gchar* _tmp20_;
		_tmp16_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp17_ = rhs;
		_tmp18_ = string_to_string (_tmp17_);
		_tmp19_ = g_strconcat ("Received invalid +CMTI message ", _tmp18_, ". Please report", NULL);
		_tmp20_ = _tmp19_;
		fso_framework_logger_warning (_tmp16_, _tmp20_);
		_g_free0 (_tmp20_);
	}
	_g_object_unref0 (cmti);
}


void fso_gsm_at_unsolicited_response_handler_plusCMTI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCMTI (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	fso_gsm_triggerUpdateNetworkStatus (NULL, NULL);
}


void fso_gsm_at_unsolicited_response_handler_plusCREG (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCREG (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCRING (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	FsoGsmCallHandler* _tmp1_;
	FsoGsmCallHandler* _tmp2_;
	const gchar* _tmp3_;
	FsoGsmCallInfo* _tmp4_;
	FsoGsmCallInfo* _tmp5_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_get_callhandler (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = rhs;
	_tmp4_ = fso_gsm_call_info_new_with_ctype (_tmp3_);
	_tmp5_ = _tmp4_;
	fso_gsm_call_handler_handleIncomingCall (_tmp2_, _tmp5_);
	_g_object_unref0 (_tmp5_);
}


void fso_gsm_at_unsolicited_response_handler_plusCRING (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCRING (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCSSI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCSSI* cssi;
	FsoGsmPlusCSSI* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_;
	FsoGsmConstantsAtResponse _tmp9_ = 0;
	gboolean _tmp10_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CSSI, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CSSI");
	cssi = (FsoGsmPlusCSSI*) _tmp1_;
	_tmp2_ = cssi;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = _tmp7_;
	_tmp9_ = fso_gsm_abstract_at_command_validateUrc ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp8_);
	_tmp10_ = _tmp9_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_g_free0 (_tmp8_);
	if (_tmp10_) {
		FsoGsmModem* _tmp11_;
		FsoGsmCallHandler* _tmp12_;
		FsoGsmCallHandler* _tmp13_;
		FsoGsmConstants* _tmp14_ = NULL;
		FsoGsmConstants* _tmp15_;
		gchar* _tmp16_ = NULL;
		gchar* _tmp17_;
		FsoGsmConstants* _tmp18_ = NULL;
		FsoGsmConstants* _tmp19_;
		FsoGsmPlusCSSI* _tmp20_;
		gconstpointer _tmp21_;
		gchar* _tmp22_ = NULL;
		gchar* _tmp23_;
		_tmp11_ = fso_gsm_theModem;
		_tmp12_ = fso_gsm_modem_get_callhandler (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = fso_gsm_constants_instance ();
		_tmp15_ = _tmp14_;
		_tmp16_ = fso_gsm_constants_callDirectionToString (_tmp15_, 0);
		_tmp17_ = _tmp16_;
		_tmp18_ = fso_gsm_constants_instance ();
		_tmp19_ = _tmp18_;
		_tmp20_ = cssi;
		_tmp21_ = ((FsoGsmSimpleAtCommand*) _tmp20_)->value;
		_tmp22_ = fso_gsm_constants_cssiCodeToString (_tmp19_, GPOINTER_TO_INT (_tmp21_));
		_tmp23_ = _tmp22_;
		fso_gsm_call_handler_addSupplementaryInformation (_tmp13_, _tmp17_, _tmp23_);
		_g_free0 (_tmp23_);
		_fso_gsm_constants_unref0 (_tmp19_);
		_g_free0 (_tmp17_);
		_fso_gsm_constants_unref0 (_tmp15_);
	} else {
		FsoFrameworkLogger* _tmp24_;
		const gchar* _tmp25_;
		const gchar* _tmp26_ = NULL;
		gchar* _tmp27_ = NULL;
		gchar* _tmp28_;
		_tmp24_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp25_ = rhs;
		_tmp26_ = string_to_string (_tmp25_);
		_tmp27_ = g_strconcat ("Received invalid +CSSI message ", _tmp26_, ". Please report", NULL);
		_tmp28_ = _tmp27_;
		fso_framework_logger_warning (_tmp24_, _tmp28_);
		_g_free0 (_tmp28_);
	}
	_g_object_unref0 (cssi);
}


void fso_gsm_at_unsolicited_response_handler_plusCSSI (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCSSI (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCSSU (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCSSU* cssu;
	FsoGsmPlusCSSU* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_;
	FsoGsmConstantsAtResponse _tmp9_ = 0;
	gboolean _tmp10_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CSSU, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CSSU");
	cssu = (FsoGsmPlusCSSU*) _tmp1_;
	_tmp2_ = cssu;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = _tmp7_;
	_tmp9_ = fso_gsm_abstract_at_command_validateUrc ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp8_);
	_tmp10_ = _tmp9_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_g_free0 (_tmp8_);
	if (_tmp10_) {
		FsoGsmModem* _tmp11_;
		FsoGsmCallHandler* _tmp12_;
		FsoGsmCallHandler* _tmp13_;
		FsoGsmConstants* _tmp14_ = NULL;
		FsoGsmConstants* _tmp15_;
		gchar* _tmp16_ = NULL;
		gchar* _tmp17_;
		FsoGsmConstants* _tmp18_ = NULL;
		FsoGsmConstants* _tmp19_;
		FsoGsmPlusCSSU* _tmp20_;
		gconstpointer _tmp21_;
		gchar* _tmp22_ = NULL;
		gchar* _tmp23_;
		_tmp11_ = fso_gsm_theModem;
		_tmp12_ = fso_gsm_modem_get_callhandler (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = fso_gsm_constants_instance ();
		_tmp15_ = _tmp14_;
		_tmp16_ = fso_gsm_constants_callDirectionToString (_tmp15_, 1);
		_tmp17_ = _tmp16_;
		_tmp18_ = fso_gsm_constants_instance ();
		_tmp19_ = _tmp18_;
		_tmp20_ = cssu;
		_tmp21_ = ((FsoGsmSimpleAtCommand*) _tmp20_)->value;
		_tmp22_ = fso_gsm_constants_cssuCodeToString (_tmp19_, GPOINTER_TO_INT (_tmp21_));
		_tmp23_ = _tmp22_;
		fso_gsm_call_handler_addSupplementaryInformation (_tmp13_, _tmp17_, _tmp23_);
		_g_free0 (_tmp23_);
		_fso_gsm_constants_unref0 (_tmp19_);
		_g_free0 (_tmp17_);
		_fso_gsm_constants_unref0 (_tmp15_);
	} else {
		FsoFrameworkLogger* _tmp24_;
		const gchar* _tmp25_;
		const gchar* _tmp26_ = NULL;
		gchar* _tmp27_ = NULL;
		gchar* _tmp28_;
		_tmp24_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp25_ = rhs;
		_tmp26_ = string_to_string (_tmp25_);
		_tmp27_ = g_strconcat ("Received invalid +CSSU message ", _tmp26_, ". Please report", NULL);
		_tmp28_ = _tmp27_;
		fso_framework_logger_warning (_tmp24_, _tmp28_);
		_g_free0 (_tmp28_);
	}
	_g_object_unref0 (cssu);
}


void fso_gsm_at_unsolicited_response_handler_plusCSSU (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCSSU (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCTZV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	const gchar* _tmp0_;
	gint _tmp1_ = 0;
	gint tzoffset;
	gint _tmp2_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = rhs;
	_tmp1_ = atoi (_tmp0_);
	tzoffset = _tmp1_;
	_tmp2_ = tzoffset;
	if (_tmp2_ < 0) {
		FsoFrameworkLogger* _tmp3_;
		const gchar* _tmp4_;
		const gchar* _tmp5_ = NULL;
		gchar* _tmp6_ = NULL;
		gchar* _tmp7_;
		_tmp3_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp4_ = rhs;
		_tmp5_ = string_to_string (_tmp4_);
		_tmp6_ = g_strconcat ("Receive invalid +CTZV message ", _tmp5_, ". Please report", NULL);
		_tmp7_ = _tmp6_;
		fso_framework_logger_warning (_tmp3_, _tmp7_);
		_g_free0 (_tmp7_);
	} else {
		FsoGsmConstants* _tmp8_ = NULL;
		FsoGsmConstants* _tmp9_;
		gint _tmp10_;
		gint _tmp11_ = 0;
		gint _tmp12_;
		gint utcoffset;
		FsoFrameworkLogger* _tmp13_;
		gint _tmp14_;
		gchar* _tmp15_ = NULL;
		gchar* _tmp16_;
		gchar* _tmp17_ = NULL;
		gchar* _tmp18_;
		FsoGsmModem* _tmp19_;
		FsoGsmModemData* _tmp20_ = NULL;
		FsoGsmModemData* data;
		FsoGsmModemData* _tmp21_;
		FsoGsmNetworkTimeReport* _tmp22_;
		gint _tmp23_;
		_tmp8_ = fso_gsm_constants_instance ();
		_tmp9_ = _tmp8_;
		_tmp10_ = tzoffset;
		_tmp11_ = fso_gsm_constants_ctzvToTimeZone (_tmp9_, _tmp10_);
		_tmp12_ = _tmp11_;
		_fso_gsm_constants_unref0 (_tmp9_);
		utcoffset = _tmp12_;
		_tmp13_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp14_ = utcoffset;
		_tmp15_ = g_strdup_printf ("%i", _tmp14_);
		_tmp16_ = _tmp15_;
		_tmp17_ = g_strconcat ("Received time zone report from GSM: ", _tmp16_, " minutes", NULL);
		_tmp18_ = _tmp17_;
		fso_framework_logger_info (_tmp13_, _tmp18_);
		_g_free0 (_tmp18_);
		_g_free0 (_tmp16_);
		_tmp19_ = fso_gsm_theModem;
		_tmp20_ = fso_gsm_modem_data (_tmp19_);
		data = _tmp20_;
		_tmp21_ = data;
		_tmp22_ = _tmp21_->networkTimeReport;
		_tmp23_ = utcoffset;
		fso_gsm_network_time_report_setZone (_tmp22_, _tmp23_);
		_g_object_unref0 (data);
	}
}


void fso_gsm_at_unsolicited_response_handler_plusCTZV (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCTZV (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCUSD (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCUSD* cusd;
	FsoGsmPlusCUSD* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_;
	FsoGsmConstantsAtResponse _tmp9_ = 0;
	gboolean _tmp10_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CUSD, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CUSD");
	cusd = (FsoGsmPlusCUSD*) _tmp1_;
	_tmp2_ = cusd;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = _tmp7_;
	_tmp9_ = fso_gsm_abstract_at_command_validateUrc ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp8_);
	_tmp10_ = _tmp9_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_g_free0 (_tmp8_);
	if (_tmp10_) {
		FsoGsmModem* _tmp11_;
		gpointer _tmp12_ = NULL;
		FreeSmartphoneGSMNetwork* obj;
		FreeSmartphoneGSMNetwork* _tmp13_;
		FsoGsmPlusCUSD* _tmp14_;
		FsoGsmPlusCUSDMode _tmp15_;
		FsoGsmPlusCUSD* _tmp16_;
		const gchar* _tmp17_;
		_tmp11_ = fso_gsm_theModem;
		_tmp12_ = fso_gsm_modem_theDevice (_tmp11_, FREE_SMARTPHONE_GSM_TYPE_NETWORK, (GBoxedCopyFunc) g_object_ref, g_object_unref);
		obj = (FreeSmartphoneGSMNetwork*) _tmp12_;
		_tmp13_ = obj;
		_tmp14_ = cusd;
		_tmp15_ = _tmp14_->mode;
		_tmp16_ = cusd;
		_tmp17_ = _tmp16_->result;
		g_signal_emit_by_name (_tmp13_, "incoming-ussd", (FreeSmartphoneGSMUssdStatus) _tmp15_, _tmp17_);
		_g_object_unref0 (obj);
	} else {
		FsoFrameworkLogger* _tmp18_;
		const gchar* _tmp19_;
		const gchar* _tmp20_ = NULL;
		gchar* _tmp21_ = NULL;
		gchar* _tmp22_;
		_tmp18_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp19_ = rhs;
		_tmp20_ = string_to_string (_tmp19_);
		_tmp21_ = g_strconcat ("Received invalid +CUSD message ", _tmp20_, ". Please report", NULL);
		_tmp22_ = _tmp21_;
		fso_framework_logger_warning (_tmp18_, _tmp22_);
		_g_free0 (_tmp22_);
	}
	_g_object_unref0 (cusd);
}


void fso_gsm_at_unsolicited_response_handler_plusCUSD (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCUSD (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_no_carrier (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
}


void fso_gsm_at_unsolicited_response_handler_no_carrier (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->no_carrier (self, prefix, rhs);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCDS (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCDS* cds;
	FsoGsmPlusCDS* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar** _tmp10_ = NULL;
	gchar** _tmp11_;
	gint _tmp11__length1;
	FsoGsmConstantsAtResponse _tmp12_ = 0;
	gboolean _tmp13_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	g_return_if_fail (pdu != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CDS, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CDS");
	cds = (FsoGsmPlusCDS*) _tmp1_;
	_tmp2_ = cds;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = pdu;
	_tmp9_ = g_strdup (_tmp8_);
	_tmp10_ = g_new0 (gchar*, 2 + 1);
	_tmp10_[0] = _tmp7_;
	_tmp10_[1] = _tmp9_;
	_tmp11_ = _tmp10_;
	_tmp11__length1 = 2;
	_tmp12_ = fso_gsm_abstract_at_command_validateUrcPdu ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp11_, 2);
	_tmp13_ = _tmp12_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_tmp11_ = (_vala_array_free (_tmp11_, _tmp11__length1, (GDestroyNotify) g_free), NULL);
	if (_tmp13_) {
		FsoGsmModem* _tmp14_;
		FsoGsmSmsHandler* _tmp15_;
		FsoGsmSmsHandler* _tmp16_;
		FsoGsmPlusCDS* _tmp17_;
		const gchar* _tmp18_;
		FsoGsmPlusCDS* _tmp19_;
		gint _tmp20_;
		_tmp14_ = fso_gsm_theModem;
		_tmp15_ = fso_gsm_modem_get_smshandler (_tmp14_);
		_tmp16_ = _tmp15_;
		_tmp17_ = cds;
		_tmp18_ = _tmp17_->hexpdu;
		_tmp19_ = cds;
		_tmp20_ = _tmp19_->tpdulen;
		fso_gsm_sms_handler_handleIncomingSmsReport (_tmp16_, _tmp18_, _tmp20_, NULL, NULL);
	} else {
		FsoFrameworkLogger* _tmp21_;
		const gchar* _tmp22_;
		const gchar* _tmp23_ = NULL;
		gchar* _tmp24_ = NULL;
		gchar* _tmp25_;
		_tmp21_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp22_ = rhs;
		_tmp23_ = string_to_string (_tmp22_);
		_tmp24_ = g_strconcat ("Received invalid +CDS message ", _tmp23_, ". Please report", NULL);
		_tmp25_ = _tmp24_;
		fso_framework_logger_warning (_tmp21_, _tmp25_);
		_g_free0 (_tmp25_);
	}
	_g_object_unref0 (cds);
}


void fso_gsm_at_unsolicited_response_handler_plusCDS (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCDS (self, prefix, rhs, pdu);
}


static struct cbs* cbs_newFromHexPdu (const gchar* hexpdu, gint tpdulen) {
	struct cbs* result = NULL;
	glong items_written;
	gchar* _tmp0_ = NULL;
	gchar* binpdu;
	gint binpdu_length1;
	gint _binpdu_size_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	gint _tmp2__length1;
	glong _tmp3_ = 0L;
	glong _tmp4_;
	struct cbs* _tmp5_;
	struct cbs* cb;
	gchar* _tmp6_;
	gint _tmp6__length1;
	gint _tmp7_;
	struct cbs* _tmp8_;
	gboolean _tmp9_ = FALSE;
	gboolean res;
	gboolean _tmp10_;
	g_return_val_if_fail (hexpdu != NULL, NULL);
	items_written = (glong) (-1);
	_tmp0_ = g_new0 (gchar, 1024);
	binpdu = _tmp0_;
	binpdu_length1 = 1024;
	_binpdu_size_ = binpdu_length1;
	_tmp1_ = hexpdu;
	_tmp2_ = binpdu;
	_tmp2__length1 = binpdu_length1;
	decode_hex_own_buf (_tmp1_, (glong) (-1), &_tmp3_, (gchar) 0, _tmp2_);
	items_written = _tmp3_;
	_tmp4_ = items_written;
	g_assert (_tmp4_ != ((glong) (-1)));
	_tmp5_ = cbs_new ();
	cb = _tmp5_;
	_tmp6_ = binpdu;
	_tmp6__length1 = binpdu_length1;
	_tmp7_ = tpdulen;
	_tmp8_ = cb;
	_tmp9_ = cbs_decode (_tmp6_, _tmp7_, _tmp8_);
	res = _tmp9_;
	_tmp10_ = res;
	if (!_tmp10_) {
		gint _tmp11_;
		gchar* _tmp12_ = NULL;
		gchar* _tmp13_;
		const gchar* _tmp14_;
		const gchar* _tmp15_ = NULL;
		gchar* _tmp16_ = NULL;
		gchar* _tmp17_;
		_tmp11_ = tpdulen;
		_tmp12_ = g_strdup_printf ("%i", _tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = hexpdu;
		_tmp15_ = string_to_string (_tmp14_);
		_tmp16_ = g_strconcat ("Cb.Message::newFromHexPdu: could not decode message w/ tpdulen ", _tmp13_, " and hexpdu ", _tmp15_, NULL);
		_tmp17_ = _tmp16_;
		g_warning ("fsogsm3rdparty.vapi:855: %s", _tmp17_);
		_g_free0 (_tmp17_);
		_g_free0 (_tmp13_);
		result = NULL;
		_cbs_free0 (cb);
		binpdu = (g_free (binpdu), NULL);
		return result;
	} else {
		result = cb;
		binpdu = (g_free (binpdu), NULL);
		return result;
	}
	_cbs_free0 (cb);
	binpdu = (g_free (binpdu), NULL);
}


static gchar* cbs_language_to_string (enum cbs_language lang) {
	gchar* result = NULL;
	enum cbs_language _tmp0_;
	_tmp0_ = lang;
	switch (_tmp0_) {
		case CBS_LANGUAGE_GERMAN:
		{
			gchar* _tmp1_;
			_tmp1_ = g_strdup ("de");
			result = _tmp1_;
			return result;
		}
		case CBS_LANGUAGE_ENGLISH:
		{
			gchar* _tmp2_;
			_tmp2_ = g_strdup ("en");
			result = _tmp2_;
			return result;
		}
		case CBS_LANGUAGE_ITALIAN:
		{
			gchar* _tmp3_;
			_tmp3_ = g_strdup ("it");
			result = _tmp3_;
			return result;
		}
		case CBS_LANGUAGE_FRENCH:
		{
			gchar* _tmp4_;
			_tmp4_ = g_strdup ("fr");
			result = _tmp4_;
			return result;
		}
		case CBS_LANGUAGE_SPANISH:
		{
			gchar* _tmp5_;
			_tmp5_ = g_strdup ("es");
			result = _tmp5_;
			return result;
		}
		case CBS_LANGUAGE_DUTCH:
		{
			gchar* _tmp6_;
			_tmp6_ = g_strdup ("nl");
			result = _tmp6_;
			return result;
		}
		case CBS_LANGUAGE_SWEDISH:
		{
			gchar* _tmp7_;
			_tmp7_ = g_strdup ("se");
			result = _tmp7_;
			return result;
		}
		case CBS_LANGUAGE_DANISH:
		{
			gchar* _tmp8_;
			_tmp8_ = g_strdup ("dk");
			result = _tmp8_;
			return result;
		}
		case CBS_LANGUAGE_PORTUGESE:
		{
			gchar* _tmp9_;
			_tmp9_ = g_strdup ("pg");
			result = _tmp9_;
			return result;
		}
		case CBS_LANGUAGE_FINNISH:
		{
			gchar* _tmp10_;
			_tmp10_ = g_strdup ("fi");
			result = _tmp10_;
			return result;
		}
		case CBS_LANGUAGE_NORWEGIAN:
		{
			gchar* _tmp11_;
			_tmp11_ = g_strdup ("no");
			result = _tmp11_;
			return result;
		}
		case CBS_LANGUAGE_GREEK:
		{
			gchar* _tmp12_;
			_tmp12_ = g_strdup ("gr");
			result = _tmp12_;
			return result;
		}
		case CBS_LANGUAGE_TURKISH:
		{
			gchar* _tmp13_;
			_tmp13_ = g_strdup ("tr");
			result = _tmp13_;
			return result;
		}
		case CBS_LANGUAGE_HUNGARIAN:
		{
			gchar* _tmp14_;
			_tmp14_ = g_strdup ("hu");
			result = _tmp14_;
			return result;
		}
		case CBS_LANGUAGE_POLISH:
		{
			gchar* _tmp15_;
			_tmp15_ = g_strdup ("pl");
			result = _tmp15_;
			return result;
		}
		case CBS_LANGUAGE_CZECH:
		{
			gchar* _tmp16_;
			_tmp16_ = g_strdup ("cz");
			result = _tmp16_;
			return result;
		}
		case CBS_LANGUAGE_HEBREW:
		{
			gchar* _tmp17_;
			_tmp17_ = g_strdup ("il");
			result = _tmp17_;
			return result;
		}
		case CBS_LANGUAGE_ARABIC:
		{
			gchar* _tmp18_;
			_tmp18_ = g_strdup ("ae");
			result = _tmp18_;
			return result;
		}
		case CBS_LANGUAGE_RUSSIAN:
		{
			gchar* _tmp19_;
			_tmp19_ = g_strdup ("ru");
			result = _tmp19_;
			return result;
		}
		case CBS_LANGUAGE_ICELANDIC:
		{
			gchar* _tmp20_;
			_tmp20_ = g_strdup ("is");
			result = _tmp20_;
			return result;
		}
		default:
		{
			gchar* _tmp21_;
			_tmp21_ = g_strdup ("unspecified");
			result = _tmp21_;
			return result;
		}
	}
}


static gchar* cbs_decode_all (struct cbs* self, gchar** language) {
	gchar* _vala_language = NULL;
	gchar* result = NULL;
	gboolean udhi = FALSE;
	enum sms_class cls = 0;
	enum sms_charset charset = 0;
	gboolean compressed = FALSE;
	enum cbs_language lang = 0;
	gboolean iso639 = FALSE;
	guint8 _tmp0_;
	gboolean _tmp1_ = FALSE;
	enum sms_class _tmp2_ = 0;
	enum sms_charset _tmp3_ = 0;
	gboolean _tmp4_ = FALSE;
	enum cbs_language _tmp5_ = 0;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gchar* _tmp9_ = NULL;
	gchar* iso639_2;
	gint iso639_2_length1;
	gint _iso639_2_size_;
	GSList* list;
	GSList* _tmp10_;
	gchar* _tmp11_;
	gint _tmp11__length1;
	gchar* _tmp12_ = NULL;
	gchar* text;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_;
	gint _tmp14__length1;
	gchar _tmp15_;
	const gchar* _tmp20_;
	gchar* _tmp21_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->dcs;
	_tmp7_ = cbs_dcs_decode (_tmp0_, &_tmp1_, &_tmp2_, &_tmp3_, &_tmp4_, &_tmp5_, &_tmp6_);
	udhi = _tmp1_;
	cls = _tmp2_;
	charset = _tmp3_;
	compressed = _tmp4_;
	lang = _tmp5_;
	iso639 = _tmp6_;
	if (!_tmp7_) {
		gchar* _tmp8_;
		g_warning ("fsogsm3rdparty.vapi:817: %s", "Cb.Message::to_string: could not decode dcs");
		_tmp8_ = g_strdup ("<unknown/invalid>");
		result = _tmp8_;
		if (language) {
			*language = _vala_language;
		} else {
			_g_free0 (_vala_language);
		}
		return result;
	}
	_tmp9_ = g_new0 (gchar, 3);
	iso639_2 = _tmp9_;
	iso639_2_length1 = 3;
	_iso639_2_size_ = iso639_2_length1;
	list = NULL;
	list = g_slist_append (list, self);
	_tmp10_ = list;
	_tmp11_ = iso639_2;
	_tmp11__length1 = iso639_2_length1;
	_tmp12_ = cbs_decode_text (_tmp10_, _tmp11_);
	text = _tmp12_;
	_tmp14_ = iso639_2;
	_tmp14__length1 = iso639_2_length1;
	_tmp15_ = _tmp14_[0];
	if (_tmp15_ != '\0') {
		gchar* _tmp16_;
		gint _tmp16__length1;
		gchar* _tmp17_;
		_tmp16_ = iso639_2;
		_tmp16__length1 = iso639_2_length1;
		_tmp17_ = g_strdup ((const gchar*) _tmp16_);
		_g_free0 (_tmp13_);
		_tmp13_ = _tmp17_;
	} else {
		enum cbs_language _tmp18_;
		gchar* _tmp19_ = NULL;
		_tmp18_ = lang;
		_tmp19_ = cbs_language_to_string (_tmp18_);
		_g_free0 (_tmp13_);
		_tmp13_ = _tmp19_;
	}
	_tmp20_ = _tmp13_;
	_tmp21_ = g_strdup (_tmp20_);
	_g_free0 (_vala_language);
	_vala_language = _tmp21_;
	result = text;
	_g_free0 (_tmp13_);
	_g_slist_free0 (list);
	iso639_2 = (g_free (iso639_2), NULL);
	if (language) {
		*language = _vala_language;
	} else {
		_g_free0 (_vala_language);
	}
	return result;
}


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 void fso_gsm_at_unsolicited_response_handler_real_plusCBM (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCBM* cbm;
	FsoGsmPlusCBM* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar** _tmp10_ = NULL;
	gchar** _tmp11_;
	gint _tmp11__length1;
	FsoGsmConstantsAtResponse _tmp12_ = 0;
	gboolean _tmp13_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	g_return_if_fail (pdu != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CBM, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CBM");
	cbm = (FsoGsmPlusCBM*) _tmp1_;
	_tmp2_ = cbm;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = pdu;
	_tmp9_ = g_strdup (_tmp8_);
	_tmp10_ = g_new0 (gchar*, 2 + 1);
	_tmp10_[0] = _tmp7_;
	_tmp10_[1] = _tmp9_;
	_tmp11_ = _tmp10_;
	_tmp11__length1 = 2;
	_tmp12_ = fso_gsm_abstract_at_command_validateUrcPdu ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp11_, 2);
	_tmp13_ = _tmp12_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_tmp11_ = (_vala_array_free (_tmp11_, _tmp11__length1, (GDestroyNotify) g_free), NULL);
	if (_tmp13_) {
		FsoGsmPlusCBM* _tmp14_;
		const gchar* _tmp15_;
		FsoGsmPlusCBM* _tmp16_;
		gint _tmp17_;
		struct cbs* _tmp18_ = NULL;
		struct cbs* cb;
		struct cbs* _tmp19_;
		_tmp14_ = cbm;
		_tmp15_ = _tmp14_->hexpdu;
		_tmp16_ = cbm;
		_tmp17_ = _tmp16_->tpdulen;
		_tmp18_ = cbs_newFromHexPdu (_tmp15_, _tmp17_);
		cb = _tmp18_;
		_tmp19_ = cb;
		if (_tmp19_ == NULL) {
			FsoFrameworkLogger* _tmp20_;
			FsoGsmPlusCBM* _tmp21_;
			const gchar* _tmp22_;
			const gchar* _tmp23_ = NULL;
			FsoGsmPlusCBM* _tmp24_;
			gint _tmp25_;
			gchar* _tmp26_ = NULL;
			gchar* _tmp27_;
			gchar* _tmp28_ = NULL;
			gchar* _tmp29_;
			_tmp20_ = ((FsoFrameworkAbstractObject*) self)->logger;
			_tmp21_ = cbm;
			_tmp22_ = _tmp21_->hexpdu;
			_tmp23_ = string_to_string (_tmp22_);
			_tmp24_ = cbm;
			_tmp25_ = _tmp24_->tpdulen;
			_tmp26_ = g_strdup_printf ("%i", _tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = g_strconcat ("Error while decoding cell broadcast message w/ PDU ", _tmp23_, " ", _tmp27_, ". Please report", NULL);
			_tmp29_ = _tmp28_;
			fso_framework_logger_warning (_tmp20_, _tmp29_);
			_g_free0 (_tmp29_);
			_g_free0 (_tmp27_);
		} else {
			gchar* lang = NULL;
			struct cbs* _tmp30_;
			gchar* _tmp31_ = NULL;
			gchar* _tmp32_ = NULL;
			gchar* text;
			FsoGsmModem* _tmp33_;
			gpointer _tmp34_ = NULL;
			FreeSmartphoneGSMCB* obj;
			FreeSmartphoneGSMCB* _tmp35_;
			const gchar* _tmp36_;
			const gchar* _tmp37_;
			GHashFunc _tmp38_;
			GEqualFunc _tmp39_;
			GHashTable* _tmp40_;
			GHashTable* _tmp41_;
			_tmp30_ = cb;
			_tmp32_ = cbs_decode_all (_tmp30_, &_tmp31_);
			_g_free0 (lang);
			lang = _tmp31_;
			text = _tmp32_;
			_tmp33_ = fso_gsm_theModem;
			_tmp34_ = fso_gsm_modem_theDevice (_tmp33_, FREE_SMARTPHONE_GSM_TYPE_CB, (GBoxedCopyFunc) g_object_ref, g_object_unref);
			obj = (FreeSmartphoneGSMCB*) _tmp34_;
			_tmp35_ = obj;
			_tmp36_ = text;
			_tmp37_ = lang;
			_tmp38_ = g_str_hash;
			_tmp39_ = g_str_equal;
			_tmp40_ = g_hash_table_new_full (_tmp38_, _tmp39_, _g_free0_, _g_variant_unref0_);
			_tmp41_ = _tmp40_;
			g_signal_emit_by_name (_tmp35_, "incoming-cell-broadcast", _tmp36_, _tmp37_, _tmp41_);
			_g_hash_table_unref0 (_tmp41_);
			_g_object_unref0 (obj);
			_g_free0 (text);
			_g_free0 (lang);
		}
		_cbs_free0 (cb);
	} else {
		FsoFrameworkLogger* _tmp42_;
		const gchar* _tmp43_;
		const gchar* _tmp44_ = NULL;
		gchar* _tmp45_ = NULL;
		gchar* _tmp46_;
		_tmp42_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp43_ = rhs;
		_tmp44_ = string_to_string (_tmp43_);
		_tmp45_ = g_strconcat ("Received invalid +CBM message ", _tmp44_, ". Please report", NULL);
		_tmp46_ = _tmp45_;
		fso_framework_logger_warning (_tmp42_, _tmp46_);
		_g_free0 (_tmp46_);
	}
	_g_object_unref0 (cbm);
}


void fso_gsm_at_unsolicited_response_handler_plusCBM (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCBM (self, prefix, rhs, pdu);
}


static void fso_gsm_at_unsolicited_response_handler_real_plusCMT (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	FsoGsmModem* _tmp0_;
	gpointer _tmp1_ = NULL;
	FsoGsmPlusCMT* cmt;
	FsoGsmPlusCMT* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar** _tmp10_ = NULL;
	gchar** _tmp11_;
	gint _tmp11__length1;
	FsoGsmConstantsAtResponse _tmp12_ = 0;
	gboolean _tmp13_;
	g_return_if_fail (prefix != NULL);
	g_return_if_fail (rhs != NULL);
	g_return_if_fail (pdu != NULL);
	_tmp0_ = fso_gsm_theModem;
	_tmp1_ = fso_gsm_modem_createAtCommand (_tmp0_, FSO_GSM_TYPE_PLUS_CMT, (GBoxedCopyFunc) g_object_ref, g_object_unref, "+CMT");
	cmt = (FsoGsmPlusCMT*) _tmp1_;
	_tmp2_ = cmt;
	_tmp3_ = prefix;
	_tmp4_ = string_to_string (_tmp3_);
	_tmp5_ = rhs;
	_tmp6_ = string_to_string (_tmp5_);
	_tmp7_ = g_strconcat (_tmp4_, ": ", _tmp6_, NULL);
	_tmp8_ = pdu;
	_tmp9_ = g_strdup (_tmp8_);
	_tmp10_ = g_new0 (gchar*, 2 + 1);
	_tmp10_[0] = _tmp7_;
	_tmp10_[1] = _tmp9_;
	_tmp11_ = _tmp10_;
	_tmp11__length1 = 2;
	_tmp12_ = fso_gsm_abstract_at_command_validateUrcPdu ((FsoGsmAbstractAtCommand*) _tmp2_, _tmp11_, 2);
	_tmp13_ = _tmp12_ == FSO_GSM_CONSTANTS_AT_RESPONSE_VALID;
	_tmp11_ = (_vala_array_free (_tmp11_, _tmp11__length1, (GDestroyNotify) g_free), NULL);
	if (_tmp13_) {
		FsoGsmModem* _tmp14_;
		FsoGsmSmsHandler* _tmp15_;
		FsoGsmSmsHandler* _tmp16_;
		FsoGsmPlusCMT* _tmp17_;
		const gchar* _tmp18_;
		FsoGsmPlusCMT* _tmp19_;
		gint _tmp20_;
		_tmp14_ = fso_gsm_theModem;
		_tmp15_ = fso_gsm_modem_get_smshandler (_tmp14_);
		_tmp16_ = _tmp15_;
		_tmp17_ = cmt;
		_tmp18_ = _tmp17_->hexpdu;
		_tmp19_ = cmt;
		_tmp20_ = _tmp19_->tpdulen;
		fso_gsm_sms_handler_handleIncomingSms (_tmp16_, _tmp18_, _tmp20_, NULL, NULL);
	} else {
		FsoFrameworkLogger* _tmp21_;
		const gchar* _tmp22_;
		const gchar* _tmp23_ = NULL;
		gchar* _tmp24_ = NULL;
		gchar* _tmp25_;
		_tmp21_ = ((FsoFrameworkAbstractObject*) self)->logger;
		_tmp22_ = rhs;
		_tmp23_ = string_to_string (_tmp22_);
		_tmp24_ = g_strconcat ("Received invalid +CMT message ", _tmp23_, ". Please report", NULL);
		_tmp25_ = _tmp24_;
		fso_framework_logger_warning (_tmp21_, _tmp25_);
		_g_free0 (_tmp25_);
	}
	_g_object_unref0 (cmt);
}


void fso_gsm_at_unsolicited_response_handler_plusCMT (FsoGsmAtUnsolicitedResponseHandler* self, const gchar* prefix, const gchar* rhs, const gchar* pdu) {
	g_return_if_fail (self != NULL);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_GET_CLASS (self)->plusCMT (self, prefix, rhs, pdu);
}


static void fso_gsm_at_unsolicited_response_handler_class_init (FsoGsmAtUnsolicitedResponseHandlerClass * klass) {
	fso_gsm_at_unsolicited_response_handler_parent_class = g_type_class_peek_parent (klass);
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCALA = fso_gsm_at_unsolicited_response_handler_real_plusCALA;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCCWA = fso_gsm_at_unsolicited_response_handler_real_plusCCWA;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCGEV = fso_gsm_at_unsolicited_response_handler_real_plusCGEV;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCGREG = fso_gsm_at_unsolicited_response_handler_real_plusCGREG;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCIEV = fso_gsm_at_unsolicited_response_handler_real_plusCIEV;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCLIP = fso_gsm_at_unsolicited_response_handler_real_plusCLIP;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCMTI = fso_gsm_at_unsolicited_response_handler_real_plusCMTI;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCREG = fso_gsm_at_unsolicited_response_handler_real_plusCREG;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCRING = fso_gsm_at_unsolicited_response_handler_real_plusCRING;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCSSI = fso_gsm_at_unsolicited_response_handler_real_plusCSSI;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCSSU = fso_gsm_at_unsolicited_response_handler_real_plusCSSU;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCTZV = fso_gsm_at_unsolicited_response_handler_real_plusCTZV;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCUSD = fso_gsm_at_unsolicited_response_handler_real_plusCUSD;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->no_carrier = fso_gsm_at_unsolicited_response_handler_real_no_carrier;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCDS = fso_gsm_at_unsolicited_response_handler_real_plusCDS;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCBM = fso_gsm_at_unsolicited_response_handler_real_plusCBM;
	FSO_GSM_AT_UNSOLICITED_RESPONSE_HANDLER_CLASS (klass)->plusCMT = fso_gsm_at_unsolicited_response_handler_real_plusCMT;
}


static void fso_gsm_at_unsolicited_response_handler_instance_init (FsoGsmAtUnsolicitedResponseHandler * self) {
}


GType fso_gsm_at_unsolicited_response_handler_get_type (void) {
	static volatile gsize fso_gsm_at_unsolicited_response_handler_type_id__volatile = 0;
	if (g_once_init_enter (&fso_gsm_at_unsolicited_response_handler_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (FsoGsmAtUnsolicitedResponseHandlerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) fso_gsm_at_unsolicited_response_handler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FsoGsmAtUnsolicitedResponseHandler), 0, (GInstanceInitFunc) fso_gsm_at_unsolicited_response_handler_instance_init, NULL };
		GType fso_gsm_at_unsolicited_response_handler_type_id;
		fso_gsm_at_unsolicited_response_handler_type_id = g_type_register_static (FSO_GSM_TYPE_BASE_UNSOLICITED_RESPONSE_HANDLER, "FsoGsmAtUnsolicitedResponseHandler", &g_define_type_info, 0);
		g_once_init_leave (&fso_gsm_at_unsolicited_response_handler_type_id__volatile, fso_gsm_at_unsolicited_response_handler_type_id);
	}
	return fso_gsm_at_unsolicited_response_handler_type_id__volatile;
}


static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	if ((array != NULL) && (destroy_func != NULL)) {
		int i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}


static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}



