diff options
author | Pekka Pessi <Pekka.Pessi@nokia.com> | 2010-10-15 15:37:44 +0300 |
---|---|---|
committer | Pekka Pessi <Pekka.Pessi@nokia.com> | 2010-10-15 15:37:44 +0300 |
commit | 01416ebc04f6da9779d62119ae9894fc0e90db61 (patch) | |
tree | 8eabd624ac2aa42bf4e0e880c36ca05e23fb7c52 /modem | |
parent | 7a7e36bda23a560be74ed87fd40cae63c30a3adc (diff) |
modem/sms: using telepathy coding style
Diffstat (limited to 'modem')
-rw-r--r-- | modem/sms-service.c | 760 | ||||
-rw-r--r-- | modem/sms.h | 59 |
2 files changed, 417 insertions, 402 deletions
diff --git a/modem/sms-service.c b/modem/sms-service.c index ed57c2f..91b8642 100644 --- a/modem/sms-service.c +++ b/modem/sms-service.c @@ -49,10 +49,11 @@ /* ---------------------------------------------------------------------- */ -G_DEFINE_TYPE(ModemSMSService, modem_sms_service, G_TYPE_OBJECT) +G_DEFINE_TYPE (ModemSMSService, modem_sms_service, G_TYPE_OBJECT) /* Signals we emit */ -enum { +enum +{ SIGNAL_CONNECTED, SIGNAL_DELIVER, SIGNAL_OUTGOING_COMPLETE, @@ -61,17 +62,18 @@ enum { N_SIGNALS }; -static guint signals[N_SIGNALS] = {0}; +static guint signals[N_SIGNALS]; /* Properties */ -enum { - PROP_NONE, - PROP_CONTENT_TYPES, - PROP_SMSC, - PROP_VALIDITY_PERIOD, - PROP_REDUCED_CHARSET, - LAST_PROPERTY -}; +enum + { + PROP_NONE, + PROP_CONTENT_TYPES, + PROP_SMSC, + PROP_VALIDITY_PERIOD, + PROP_REDUCED_CHARSET, + LAST_PROPERTY + }; /* private data */ struct _ModemSMSServicePrivate @@ -86,7 +88,8 @@ struct _ModemSMSServicePrivate DBusGProxy *proxy; - struct { + struct + { GQueue queue[1]; GError *error; int read; @@ -107,163 +110,164 @@ struct _ModemSMSServicePrivate static ModemOfonoPropChangedCb on_manager_property_changed; static ModemOfonoPropsReply reply_to_sms_manager_get_properties; -static void modem_sms_check_connected(ModemSMSService *self, - ModemRequest *request, - char const *operation, - const GError *error); +static void modem_sms_check_connected (ModemSMSService *self, + ModemRequest *request, + char const *operation, + const GError *error); -static void modem_sms_incoming_deliver(ModemSMSService *self, - SMSGDeliver *deliver); +static void modem_sms_incoming_deliver (ModemSMSService *self, + SMSGDeliver *deliver); /* ------------------------------------------------------------------------ */ /* GObject interface */ static void -modem_sms_service_init(ModemSMSService *self) +modem_sms_service_init (ModemSMSService *self) { - DEBUG("enter"); + DEBUG ("enter"); - self->priv = G_TYPE_INSTANCE_GET_PRIVATE( - self, MODEM_TYPE_SMS_SERVICE, ModemSMSServicePrivate); + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + MODEM_TYPE_SMS_SERVICE, ModemSMSServicePrivate); - g_queue_init(self->priv->connecting.queue); + g_queue_init (self->priv->connecting.queue); - self->priv->received = g_hash_table_new_full(g_str_hash, g_str_equal, - NULL, /* Message object stored in hash owns the key ref, too */ - g_object_unref); + self->priv->received = g_hash_table_new_full (g_str_hash, g_str_equal, + NULL, /* Message object stored in hash owns the key */ + g_object_unref); } static void -modem_sms_service_get_property(GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) +modem_sms_service_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) { - ModemSMSService *self = MODEM_SMS_SERVICE(object); + ModemSMSService *self = MODEM_SMS_SERVICE (object); ModemSMSServicePrivate *priv = self->priv; - switch(property_id) { - + switch (property_id) + { case PROP_CONTENT_TYPES: - g_value_set_boxed(value, priv->content_types); + g_value_set_boxed (value, priv->content_types); break; case PROP_SMSC: - g_value_set_string(value, priv->smsc); + g_value_set_string (value, priv->smsc); break; case PROP_VALIDITY_PERIOD: - g_value_set_uint(value, priv->validity_period); + g_value_set_uint (value, priv->validity_period); break; case PROP_REDUCED_CHARSET: - g_value_set_boolean(value, priv->reduced_charset); + g_value_set_boolean (value, priv->reduced_charset); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; - } + } } static void -modem_sms_service_set_property(GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) +modem_sms_service_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { - ModemSMSService *self = MODEM_SMS_SERVICE(object); + ModemSMSService *self = MODEM_SMS_SERVICE (object); ModemSMSServicePrivate *priv = self->priv; gpointer old; - switch(property_id) { - + switch (property_id) + { case PROP_CONTENT_TYPES: old = priv->content_types; - priv->content_types = g_value_dup_boxed(value); - if (old) g_boxed_free(G_TYPE_STRV, old); + priv->content_types = g_value_dup_boxed (value); + if (old) g_boxed_free (G_TYPE_STRV, old); break; case PROP_SMSC: old = priv->smsc; - priv->smsc = g_value_dup_string(value); - g_free(old); + priv->smsc = g_value_dup_string (value); + g_free (old); break; case PROP_VALIDITY_PERIOD: - priv->validity_period = g_value_get_uint(value); + priv->validity_period = g_value_get_uint (value); break; case PROP_REDUCED_CHARSET: - priv->reduced_charset = g_value_get_boolean(value); + priv->reduced_charset = g_value_get_boolean (value); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; - } + } } static void -modem_sms_service_constructed(GObject *object) +modem_sms_service_constructed (GObject *object) { - if (G_OBJECT_CLASS(modem_sms_service_parent_class)->constructed) - G_OBJECT_CLASS(modem_sms_service_parent_class)->constructed(object); + if (G_OBJECT_CLASS (modem_sms_service_parent_class)->constructed) + G_OBJECT_CLASS (modem_sms_service_parent_class)->constructed (object); } static void -modem_sms_service_dispose(GObject *object) +modem_sms_service_dispose (GObject *object) { - ModemSMSService *self = MODEM_SMS_SERVICE(object); + ModemSMSService *self = MODEM_SMS_SERVICE (object); ModemSMSServicePrivate *priv = self->priv; if (priv->dispose_has_run) return; priv->dispose_has_run = TRUE; - modem_sms_service_disconnect(self); + modem_sms_service_disconnect (self); if (priv->proxy) - g_object_run_dispose(G_OBJECT(priv->proxy)); + g_object_run_dispose (G_OBJECT (priv->proxy)); - if (G_OBJECT_CLASS(modem_sms_service_parent_class)->dispose) - G_OBJECT_CLASS(modem_sms_service_parent_class)->dispose(object); + if (G_OBJECT_CLASS (modem_sms_service_parent_class)->dispose) + G_OBJECT_CLASS (modem_sms_service_parent_class)->dispose (object); } static void -modem_sms_service_finalize(GObject *object) +modem_sms_service_finalize (GObject *object) { - ModemSMSService *self = MODEM_SMS_SERVICE(object); + ModemSMSService *self = MODEM_SMS_SERVICE (object); ModemSMSServicePrivate *priv = self->priv; - DEBUG("enter"); + DEBUG ("enter"); /* Free any data held directly by the object here */ - g_free(priv->client_id); - g_free(priv->bus_name); - g_free(priv->smsc); + g_free (priv->client_id); + g_free (priv->bus_name); + g_free (priv->smsc); if (priv->proxy) - g_object_unref(priv->proxy); + g_object_unref (priv->proxy); + if (priv->connecting.error) - g_clear_error(&priv->connecting.error); + g_clear_error (&priv->connecting.error); if (priv->content_types) - g_boxed_free(G_TYPE_STRV, priv->content_types); + g_boxed_free (G_TYPE_STRV, priv->content_types); if (priv->received) - g_hash_table_destroy(priv->received); + g_hash_table_destroy (priv->received); - G_OBJECT_CLASS(modem_sms_service_parent_class)->finalize(object); + G_OBJECT_CLASS (modem_sms_service_parent_class)->finalize (object); } static void -modem_sms_service_class_init(ModemSMSServiceClass *klass) +modem_sms_service_class_init (ModemSMSServiceClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS(klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - DEBUG("enter"); + DEBUG ("enter"); object_class->get_property = modem_sms_service_get_property; object_class->set_property = modem_sms_service_set_property; @@ -271,184 +275,178 @@ modem_sms_service_class_init(ModemSMSServiceClass *klass) object_class->dispose = modem_sms_service_dispose; object_class->finalize = modem_sms_service_finalize; - g_object_class_install_property( - object_class, PROP_CONTENT_TYPES, - g_param_spec_boxed("content-types", - "Content types used", - "List of MIME content types used by application.", - G_TYPE_STRV, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property( - object_class, PROP_SMSC, - g_param_spec_string("service-centre", - "SMS Service Centre", - "ISDN Address for SMS Service Centre", - "", /* default value */ - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property( - object_class, PROP_VALIDITY_PERIOD, - g_param_spec_uint("validity-period", - "SMS Validity Period", - "Period while SMS service centre " - "keep trying to deliver SMS.", - /* anything above 0 gets rounded up to 5 minutes */ - 0, /* 0 means no validity period */ - 63 * 7 * 24 * 60 * 60, /* max - 63 weeks */ - 0, /* no validity period - it is up to service centre */ - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property( - object_class, PROP_REDUCED_CHARSET, - g_param_spec_boolean("reduced-charset", - "SMS reduced character set support", - "Whether SMS should be encoded with " - "a reduced character set", - FALSE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, PROP_CONTENT_TYPES, + g_param_spec_boxed ("content-types", + "Content types used", + "List of MIME content types used by application.", + G_TYPE_STRV, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (object_class, PROP_SMSC, + g_param_spec_string ("service-centre", + "SMS Service Centre", + "ISDN Address for SMS Service Centre", + "", /* default value */ + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (object_class, PROP_VALIDITY_PERIOD, + g_param_spec_uint ("validity-period", + "SMS Validity Period", + "Period while SMS service centre " + "keep trying to deliver SMS.", + /* anything above 0 gets rounded up to 5 minutes */ + 0, /* 0 means no validity period */ + 63 * 7 * 24 * 60 * 60, /* max - 63 weeks */ + 0, /* no validity period - it is up to service centre */ + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (object_class, PROP_REDUCED_CHARSET, + g_param_spec_boolean ("reduced-charset", + "SMS reduced character set support", + "Whether SMS should be encoded with " + "a reduced character set", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); signals[SIGNAL_CONNECTED] = - g_signal_new("connected", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + g_signal_new ("connected", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); signals[SIGNAL_DELIVER] = - g_signal_new("deliver", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, 1, - G_TYPE_OBJECT); + g_signal_new ("deliver", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + G_TYPE_OBJECT); signals[SIGNAL_OUTGOING_COMPLETE] = - g_signal_new("outgoing-complete", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, - NULL, NULL, - _modem__marshal_VOID__STRING_STRING, - G_TYPE_NONE, 2, - G_TYPE_STRING, G_TYPE_STRING); + g_signal_new ("outgoing-complete", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, + NULL, NULL, + _modem__marshal_VOID__STRING_STRING, + G_TYPE_NONE, 2, + G_TYPE_STRING, G_TYPE_STRING); signals[SIGNAL_OUTGOING_ERROR] = - g_signal_new("outgoing-error", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, - NULL, NULL, - _modem__marshal_VOID__STRING_STRING_POINTER, - G_TYPE_NONE, 3, - G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); + g_signal_new ("outgoing-error", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, + NULL, NULL, + _modem__marshal_VOID__STRING_STRING_POINTER, + G_TYPE_NONE, 3, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); signals[SIGNAL_STATUS_REPORT] = - g_signal_new("state-report", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, 1, - G_TYPE_OBJECT); - - g_type_class_add_private(klass, sizeof (ModemSMSServicePrivate)); + g_signal_new ("state-report", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + G_TYPE_OBJECT); + + g_type_class_add_private (klass, sizeof (ModemSMSServicePrivate)); } /* ---------------------------------------------------------------------- */ /* Properties */ static void -on_manager_property_changed(DBusGProxy *proxy, - char const *property, - GValue const *value, - gpointer user_data) +on_manager_property_changed (DBusGProxy *proxy, + char const *property, + GValue const *value, + gpointer user_data) { char *s; - s = g_strdup_value_contents(value); - DEBUG("%s = %s", property, s); - g_free(s); + s = g_strdup_value_contents (value); + DEBUG ("%s = %s", property, s); + g_free (s); } static void -reply_to_sms_manager_get_properties(gpointer _self, - ModemRequest *request, - GHashTable *properties, - GError const *error, - gpointer user_data) +reply_to_sms_manager_get_properties (gpointer _self, + ModemRequest *request, + GHashTable *properties, + GError const *error, + gpointer user_data) { - ModemSMSService *self = MODEM_SMS_SERVICE(_self); + ModemSMSService *self = MODEM_SMS_SERVICE (_self); - DEBUG("enter"); + DEBUG ("enter"); if (!error) { char *key; GValue *value; GHashTableIter iter[1]; - g_hash_table_iter_init(iter, properties); - while (g_hash_table_iter_next(iter, - (gpointer)&key, (gpointer)&value)) { - - char *s = g_strdup_value_contents(value); - DEBUG("%s = %s", key, s); - g_free(s); - } + g_hash_table_iter_init (iter, properties); + while (g_hash_table_iter_next (iter, + (gpointer)&key, (gpointer)&value)) + { + char *s = g_strdup_value_contents (value); + DEBUG ("%s = %s", key, s); + g_free (s); + } } - modem_sms_check_connected(self, request, "GetProperties", error); + modem_sms_check_connected (self, request, "GetProperties", error); } /* ---------------------------------------------------------------------- */ /* Signal connection helpers */ gulong -modem_sms_connect_to_connected(ModemSMSService *self, - ModemSMSConnectedHandler *user_function, - gpointer user_data) +modem_sms_connect_to_connected (ModemSMSService *self, + ModemSMSConnectedHandler *handler, + gpointer data) { - return g_signal_connect(self, "connected", G_CALLBACK(user_function), user_data); + return g_signal_connect (self, "connected", G_CALLBACK (handler), data); } gulong -modem_sms_connect_to_deliver(ModemSMSService *self, - ModemSMSDeliverHandler *user_function, - gpointer user_data) +modem_sms_connect_to_deliver (ModemSMSService *self, + ModemSMSDeliverHandler *handler, + gpointer data) { - return g_signal_connect(self, "deliver", G_CALLBACK(user_function), user_data); + return g_signal_connect (self, "deliver", G_CALLBACK (handler), data); } -/* --------------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ /* modem_sms_service interface */ - gboolean -modem_sms_service_is_connected(ModemSMSService const *self) +modem_sms_service_is_connected (ModemSMSService const *self) { - return MODEM_IS_SMS_SERVICE(self) && - self->priv->connected != 0; + return MODEM_IS_SMS_SERVICE (self) && self->priv->connected != 0; } gboolean -modem_sms_service_is_connecting(ModemSMSService const *self) +modem_sms_service_is_connecting (ModemSMSService const *self) { - return MODEM_IS_SMS_SERVICE(self) && - !g_queue_is_empty(self->priv->connecting.queue); + return MODEM_IS_SMS_SERVICE (self) && + !g_queue_is_empty (self->priv->connecting.queue); } guint64 -modem_sms_service_time_connected(ModemSMSService const *self) +modem_sms_service_time_connected (ModemSMSService const *self) { - if (MODEM_IS_SMS_SERVICE(self)) + if (MODEM_IS_SMS_SERVICE (self)) return (guint64)self->priv->connected; else return 0; @@ -458,38 +456,39 @@ modem_sms_service_time_connected(ModemSMSService const *self) /* FIXME: something for Ofono... */ static char * -modem_sms_generate_token(void) +modem_sms_generate_token (void) { char *token; uuid_t uu; - token = g_new(gchar, 37); - uuid_generate_random(uu); - uuid_unparse_lower(uu, token); + token = g_new (gchar, 37); + uuid_generate_random (uu); + uuid_unparse_lower (uu, token); return token; } static void -dump_message_dict(GHashTable *dict) +dump_message_dict (GHashTable *dict) { char *key; GValue *value; GHashTableIter iter[1]; - g_hash_table_iter_init(iter, dict); - while (g_hash_table_iter_next(iter, (gpointer)&key, (gpointer)&value)) { - char *s = g_strdup_value_contents(value); - DEBUG("%s = %s", key, s); - g_free(s); - } + g_hash_table_iter_init (iter, dict); + while (g_hash_table_iter_next (iter, (gpointer)&key, (gpointer)&value)) + { + char *s = g_strdup_value_contents (value); + DEBUG ("%s = %s", key, s); + g_free (s); + } } static void -on_incoming_message(DBusGProxy *proxy, - char const *message, - GHashTable *dict, - gpointer _self) +on_incoming_message (DBusGProxy *proxy, + char const *message, + GHashTable *dict, + gpointer _self) { /* FIXME: ofono does not provide this */ char const *smsc = "1234567"; @@ -501,94 +500,95 @@ on_incoming_message(DBusGProxy *proxy, GError *error = NULL; GValue *value; SMSGDeliver *d; - ModemSMSService *self = MODEM_SMS_SERVICE(_self); + ModemSMSService *self = MODEM_SMS_SERVICE (_self); - DEBUG("message = \"%s\"", message); + DEBUG ("message = \"%s\"", message); - dump_message_dict(dict); + dump_message_dict (dict); - value = g_hash_table_lookup(dict, "Sender"); + value = g_hash_table_lookup (dict, "Sender"); if (value) - originator = g_value_get_string(value); + originator = g_value_get_string (value); - token = modem_sms_generate_token(); - d = sms_g_deliver_incoming(message, token, originator, + token = modem_sms_generate_token (); + d = sms_g_deliver_incoming (message, token, originator, smsc, type, mwi_type, &error); - if (!d) { - modem_message(MODEM_SERVICE_SMS, - "deserializing SMS-DELIVER \"%s\" failed: " - GERROR_MSG_FMT, token, GERROR_MSG_CODE(error)); - g_clear_error(&error); - } + if (!d) + { + modem_message (MODEM_SERVICE_SMS, + "deserializing SMS-DELIVER \"%s\" failed: " + GERROR_MSG_FMT, token, GERROR_MSG_CODE (error)); + g_clear_error (&error); + } else { - modem_sms_incoming_deliver(self, d); - g_object_unref(d); + modem_sms_incoming_deliver (self, d); + g_object_unref (d); } - g_free(token); + g_free (token); } /* ------------------------------------------------------------------------- */ /* Connect to SMS */ gboolean -modem_sms_service_connect(ModemSMSService *self, char const *object_path) +modem_sms_service_connect (ModemSMSService *self, char const *object_path) { DBusGProxy *p; ModemRequest *request; - DEBUG("enter"); + DEBUG ("enter"); ModemSMSServicePrivate *priv = self->priv; if (priv->dispose_has_run) return FALSE; - if (modem_sms_service_is_connected(self)) + if (modem_sms_service_is_connected (self)) return TRUE; - if (modem_sms_service_is_connecting(self)) + if (modem_sms_service_is_connecting (self)) return TRUE; if (!priv->proxy) - priv->proxy = modem_ofono_proxy(object_path, OFONO_IFACE_SMS); + priv->proxy = modem_ofono_proxy (object_path, OFONO_IFACE_SMS); if (!priv->proxy) - g_error("Failed to proxy the SMS service"); + g_error ("Failed to proxy the SMS service"); p = priv->proxy; - modem_ofono_proxy_connect_to_property_changed( - p, on_manager_property_changed, self); + modem_ofono_proxy_connect_to_property_changed (p, + on_manager_property_changed, self); -#define CONNECT(handler, name, signature...) \ - dbus_g_proxy_add_signal(p, (name), ##signature); \ - dbus_g_proxy_connect_signal(p, (name), G_CALLBACK(handler), self, NULL) +#define CONNECT (handler, name, signature...) \ + dbus_g_proxy_add_signal (p, (name), ##signature); \ + dbus_g_proxy_connect_signal (p, (name), G_CALLBACK (handler), self, NULL) /* XXX: SMS class 0. Does Ofono actually need a separate * signal for them instead of providing the class in the * properties dict? */ - CONNECT(on_incoming_message, "ImmediateMessage", - G_TYPE_STRING, MODEM_TYPE_DBUS_DICT, G_TYPE_INVALID); - CONNECT(on_incoming_message, "IncomingMessage", - G_TYPE_STRING, MODEM_TYPE_DBUS_DICT, G_TYPE_INVALID); + CONNECT (on_incoming_message, "ImmediateMessage", + G_TYPE_STRING, MODEM_TYPE_DBUS_DICT, G_TYPE_INVALID); + CONNECT (on_incoming_message, "IncomingMessage", + G_TYPE_STRING, MODEM_TYPE_DBUS_DICT, G_TYPE_INVALID); - request = modem_ofono_proxy_request_properties( - p, reply_to_sms_manager_get_properties, self, NULL); + request = modem_ofono_proxy_request_properties (p, + reply_to_sms_manager_get_properties, self, NULL); - g_queue_push_tail(priv->connecting.queue, request); + g_queue_push_tail (priv->connecting.queue, request); return TRUE; } GError * -modem_sms_service_connection_error(ModemSMSService *self) +modem_sms_service_connection_error (ModemSMSService *self) { - return MODEM_SMS_SERVICE(self) + return MODEM_SMS_SERVICE (self) && self->priv->connecting.error - ? g_error_copy(self->priv->connecting.error) + ? g_error_copy (self->priv->connecting.error) : NULL; } gboolean -modem_sms_service_is_error_serious(GError *error) +modem_sms_service_is_error_serious (GError *error) { if (error == NULL) return FALSE; @@ -597,128 +597,134 @@ modem_sms_service_is_error_serious(GError *error) } static void -modem_sms_check_connected(ModemSMSService *self, - ModemRequest *request, - char const *operation, - const GError *error) +modem_sms_check_connected (ModemSMSService *self, + ModemRequest *request, + char const *operation, + const GError *error) { ModemSMSServicePrivate *priv = self->priv; - if (g_queue_find(priv->connecting.queue, request)) { - g_queue_remove(priv->connecting.queue, request); - - if (error) { - if (!modem_sms_service_is_error_serious(priv->connecting.error)) { - g_clear_error(&priv->connecting.error); - g_set_error(&priv->connecting.error, - error->domain, error->code, - "%s.%s(): %s", OFONO_IFACE_SMS, operation, error->message); - } - - modem_critical(MODEM_SERVICE_SMS, GERROR_MSG_FMT, - GERROR_MSG_CODE(priv->connecting.error)); - } - - if (g_queue_is_empty(priv->connecting.queue)) { - if (priv->connecting.error) { - priv->connected = 0; - } - else { - GHashTableIter i[1]; - time_t now = time(NULL); - gpointer key, value; - - for (g_hash_table_iter_init(i, priv->received); - g_hash_table_iter_next(i, &key, &value);) { - g_object_set(value, "time-delivered", (guint64)now, NULL); + if (g_queue_find (priv->connecting.queue, request)) + { + g_queue_remove (priv->connecting.queue, request); + + if (error) + { + if (!modem_sms_service_is_error_serious (priv->connecting.error)) + { + g_clear_error (&priv->connecting.error); + g_set_error (&priv->connecting.error, + error->domain, error->code, + "%s.%s (): %s", OFONO_IFACE_SMS, operation, error->message); + } + + modem_critical (MODEM_SERVICE_SMS, GERROR_MSG_FMT, + GERROR_MSG_CODE (priv->connecting.error)); } - priv->connected = now; - } - - g_signal_emit(self, signals[SIGNAL_CONNECTED], 0); + if (g_queue_is_empty (priv->connecting.queue)) + { + if (priv->connecting.error) + { + priv->connected = 0; + } + else { + GHashTableIter i[1]; + time_t now = time (NULL); + gpointer key, value; + + for (g_hash_table_iter_init (i, priv->received); + g_hash_table_iter_next (i, &key, &value);) + { + g_object_set (value, "time-delivered", (guint64)now, NULL); + } + + priv->connected = now; + } + + g_signal_emit (self, signals[SIGNAL_CONNECTED], 0); + } } - } } void -modem_sms_service_disconnect(ModemSMSService *self) +modem_sms_service_disconnect (ModemSMSService *self) { ModemSMSServicePrivate *priv = self->priv; - DEBUG("enter"); + DEBUG ("enter"); priv->connected = 0; - while (!g_queue_is_empty(priv->connecting.queue)) - modem_request_cancel(g_queue_pop_head(priv->connecting.queue)); + while (!g_queue_is_empty (priv->connecting.queue)) + modem_request_cancel (g_queue_pop_head (priv->connecting.queue)); - g_hash_table_remove_all(priv->received); + g_hash_table_remove_all (priv->received); } /* ---------------------------------------------------------------------- */ /* Properties */ static void -reply_to_modem_sms_request(DBusGProxy *proxy, - DBusGProxyCall *call, - void *_request) +reply_to_modem_sms_request (DBusGProxy *proxy, + DBusGProxyCall *call, + void *_request) { ModemRequest *request = _request; - ModemSMSService *self = modem_request_object(request); - ModemSMSServiceReply *callback = modem_request_callback(request); - gpointer user_data = modem_request_user_data(request); + ModemSMSService *self = modem_request_object (request); + ModemSMSServiceReply *callback = modem_request_callback (request); + gpointer user_data = modem_request_user_data (request); GError *error = NULL; - dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_INVALID); + dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); if (callback) - callback(self, request, error, user_data); - g_clear_error(&error); + callback (self, request, error, user_data); + g_clear_error (&error); } ModemRequest * -modem_sms_set_sc_address(ModemSMSService *self, - char const *address, - ModemSMSServiceReply *callback, - gpointer user_data) +modem_sms_set_sc_address (ModemSMSService *self, + char const *address, + ModemSMSServiceReply *callback, + gpointer user_data) { ModemSMSServicePrivate *priv = self->priv; GValue value[1]; - g_value_init(memset(value, 0, sizeof value), G_TYPE_STRING); - g_value_set_string(value, address); + g_value_init (memset (value, 0, sizeof value), G_TYPE_STRING); + g_value_set_string (value, address); - DEBUG(OFONO_IFACE_SMS ".SetProperty(%s, %s)", + DEBUG (OFONO_IFACE_SMS ".SetProperty (%s, %s)", "ServiceCenterAddress", address); - return modem_request_begin(self, priv->proxy, "SetProperty", + return modem_request_begin (self, priv->proxy, "SetProperty", reply_to_modem_sms_request, - G_CALLBACK(callback), user_data, + G_CALLBACK (callback), user_data, G_TYPE_STRING, "ServiceCenterAddress", G_TYPE_VALUE, value, G_TYPE_INVALID); } ModemRequest * -modem_sms_set_srr(ModemSMSService *self, - gboolean srr, - ModemSMSServiceReply *callback, - gpointer user_data) +modem_sms_set_srr (ModemSMSService *self, + gboolean srr, + ModemSMSServiceReply *callback, + gpointer user_data) { ModemSMSServicePrivate *priv = self->priv; GValue value[1]; - g_value_init(memset(value, 0, sizeof value), G_TYPE_BOOLEAN); - g_value_set_boolean(value, srr); + g_value_init (memset (value, 0, sizeof value), G_TYPE_BOOLEAN); + g_value_set_boolean (value, srr); - DEBUG(OFONO_IFACE_SMS ".SetProperty(%s, %s)", + DEBUG (OFONO_IFACE_SMS ".SetProperty (%s, %s)", "UseDeliveryReports", srr ? "true" : "false"); - return modem_request_begin(self, priv->proxy, "SetProperty", + return modem_request_begin (self, priv->proxy, "SetProperty", reply_to_modem_sms_request, - G_CALLBACK(callback), user_data, + G_CALLBACK (callback), user_data, G_TYPE_STRING, "UseDeliveryReports", G_TYPE_VALUE, value, G_TYPE_INVALID); @@ -728,55 +734,60 @@ modem_sms_set_srr(ModemSMSService *self, /* Message deliver */ static void -modem_sms_incoming_deliver(ModemSMSService *self, SMSGDeliver *deliver) +modem_sms_incoming_deliver (ModemSMSService *self, SMSGDeliver *deliver) { ModemSMSServicePrivate *priv = self->priv; - gchar const *content_type = sms_g_deliver_get_content_type(deliver); - gchar const *token = sms_g_deliver_get_message_token(deliver); + gchar const *content_type = sms_g_deliver_get_content_type (deliver); + gchar const *token = sms_g_deliver_get_message_token (deliver); - if (priv->content_types) { - int i; + if (priv->content_types) + { + int i; + + for (i = 0; priv->content_types[i]; i++) + { + if (g_ascii_strcasecmp (content_type, priv->content_types[i]) == 0) + break; + } - for (i = 0; priv->content_types[i]; i++) { - if (g_ascii_strcasecmp(content_type, priv->content_types[i]) == 0) - break; + if (priv->content_types[i] == NULL) + { + DEBUG ("SMS-DELIVER containing %s is ignored", content_type); + return; + } } - if (priv->content_types[i] == NULL) { - DEBUG("SMS-DELIVER containing %s is ignored", content_type); + if (g_hash_table_lookup (priv->received, (gpointer)token)) + { + DEBUG ("SMS-DELIVER %s already read, ignoring", token); return; } - } - if (g_hash_table_lookup(priv->received, (gpointer)token)) { - DEBUG("SMS-DELIVER %s already read, ignoring", token); - return; - } - - g_hash_table_insert(priv->received, (gpointer)token, g_object_ref(deliver)); + g_hash_table_insert (priv->received, (gpointer)token, g_object_ref (deliver)); - DEBUG("SMS-DELIVER connected:%ld", priv->connected); + DEBUG ("SMS-DELIVER connected:%ld", priv->connected); if (priv->connected) - g_signal_emit(self, signals[SIGNAL_DELIVER], 0, deliver); + g_signal_emit (self, signals[SIGNAL_DELIVER], 0, deliver); } #if nomore static void -modem_sms_incoming_status_report(ModemSMSService *self, - SMSGStatusReport *sr) +modem_sms_incoming_status_report (ModemSMSService *self, + SMSGStatusReport *sr) { ModemSMSServicePrivate *priv = self->priv; - gchar const *token = sms_g_status_report_get_message_token(sr); + gchar const *token = sms_g_status_report_get_message_token (sr); - if (g_hash_table_lookup(priv->received, (gpointer)token)) { - DEBUG("SMS-STATUS REPORT %s already read, ignoring", token); - return; - } - g_hash_table_insert(priv->received, (gpointer)token, g_object_ref(sr)); + if (g_hash_table_lookup (priv->received, (gpointer)token)) + { + DEBUG ("SMS-STATUS REPORT %s already read, ignoring", token); + return; + } + g_hash_table_insert (priv->received, (gpointer)token, g_object_ref (sr)); if (priv->connected) - g_signal_emit(self, signals[SIGNAL_STATUS_REPORT], 0, sr); + g_signal_emit (self, signals[SIGNAL_STATUS_REPORT], 0, sr); } #endif @@ -784,51 +795,52 @@ modem_sms_incoming_status_report(ModemSMSService *self, /* Sending */ static void -reply_to_send_message(DBusGProxy *proxy, - DBusGProxyCall *call, - void *_request) +reply_to_send_message (DBusGProxy *proxy, + DBusGProxyCall *call, + void *_request) { char *token = NULL; ModemRequest *request = _request; - ModemSMSService *self = modem_request_object(request); - ModemSMSServiceSendReply *callback = modem_request_callback(request); - gpointer user_data = modem_request_user_data(request); + ModemSMSService *self = modem_request_object (request); + ModemSMSServiceSendReply *callback = modem_request_callback (request); + gpointer user_data = modem_request_user_data (request); GError *error = NULL; - if (dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_INVALID)) { - char const *destination; + if (dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID)) + { + char const *destination; - destination = modem_request_get_data(request, "destination"); + destination = modem_request_get_data (request, "destination"); - token = modem_sms_generate_token(); - } + token = modem_sms_generate_token (); + } - callback(self, request, token, error, user_data); + callback (self, request, token, error, user_data); - g_free(token); - g_clear_error(&error); + g_free (token); + g_clear_error (&error); } ModemRequest * -modem_sms_request_send(ModemSMSService *self, - char const *to, char const *message, - ModemSMSServiceSendReply *reply, gpointer user_data) +modem_sms_request_send (ModemSMSService *self, + char const *to, char const *message, + ModemSMSServiceSendReply *reply, gpointer user_data) { ModemRequest *request; ModemSMSServicePrivate *priv = self->priv; - DEBUG(OFONO_IFACE_SMS ".SendMessage(%s,%s)", to, message); - request = modem_request(self, priv->proxy, - "SendMessage", reply_to_send_message, - G_CALLBACK(reply), user_data, - G_TYPE_STRING, to, - G_TYPE_STRING, message, - G_TYPE_INVALID); + DEBUG (OFONO_IFACE_SMS ".SendMessage (%s,%s)", to, message); + request = modem_request (self, priv->proxy, + "SendMessage", reply_to_send_message, + G_CALLBACK (reply), user_data, + G_TYPE_STRING, to, + G_TYPE_STRING, message, + G_TYPE_INVALID); if (request) - modem_request_add_data_full(request, "destination", - g_strdup(to), g_free); + modem_request_add_data_full (request, "destination", + g_strdup (to), g_free); return request; } diff --git a/modem/sms.h b/modem/sms.h index 8afe211..fc87967 100644 --- a/modem/sms.h +++ b/modem/sms.h @@ -39,42 +39,45 @@ G_END_DECLS G_BEGIN_DECLS -struct _ModemSMSServiceClass { +struct _ModemSMSServiceClass +{ GObjectClass parent_class; }; -struct _ModemSMSService { +struct _ModemSMSService +{ GObject parent; ModemSMSServicePrivate *priv; }; -GType modem_sms_service_get_type(void); +GType modem_sms_service_get_type (void); /* TYPE MACROS */ #define MODEM_TYPE_SMS_SERVICE \ - (modem_sms_service_get_type()) -#define MODEM_SMS_SERVICE(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), MODEM_TYPE_SMS_SERVICE, ModemSMSService)) -#define MODEM_SMS_SERVICE_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), MODEM_TYPE_SMS_SERVICE, ModemSMSServiceClass)) -#define MODEM_IS_SMS_SERVICE(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), MODEM_TYPE_SMS_SERVICE)) -#define MODEM_IS_SMS_SERVICE_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), MODEM_TYPE_SMS_SERVICE)) -#define MODEM_SMS_SERVICE_GET_CLASS(obj) \ + (modem_sms_service_get_type ()) +#define MODEM_SMS_SERVICE (obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEM_TYPE_SMS_SERVICE, ModemSMSService)) +#define MODEM_SMS_SERVICE_CLASS (klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), MODEM_TYPE_SMS_SERVICE, ModemSMSServiceClass)) +#define MODEM_IS_SMS_SERVICE (obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEM_TYPE_SMS_SERVICE)) +#define MODEM_IS_SMS_SERVICE_CLASS (klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEM_TYPE_SMS_SERVICE)) +#define MODEM_SMS_SERVICE_GET_CLASS (obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEM_TYPE_SMS_SERVICE, ModemSMSServiceClass)) /* ---------------------------------------------------------------------- */ -typedef void ModemSMSConnectedHandler(ModemSMSService *, gpointer); -typedef void ModemSMSDeliverHandler(ModemSMSService *, SMSGDeliver *, gpointer); +typedef void ModemSMSConnectedHandler (ModemSMSService *, gpointer); +typedef void ModemSMSDeliverHandler (ModemSMSService *, + SMSGDeliver *, gpointer); -typedef void ModemSMSServiceReply(ModemSMSService *self, +typedef void ModemSMSServiceReply (ModemSMSService *self, ModemRequest *request, GError const *error, gpointer user_data); -typedef void ModemSMSServiceSendReply(ModemSMSService *self, +typedef void ModemSMSServiceSendReply (ModemSMSService *self, ModemRequest *request, char const *message_id, GError const *error, @@ -82,36 +85,36 @@ typedef void ModemSMSServiceSendReply(ModemSMSService *self, /* ---------------------------------------------------------------------- */ -gulong modem_sms_connect_to_connected(ModemSMSService *self, +gulong modem_sms_connect_to_connected (ModemSMSService *self, ModemSMSConnectedHandler *user_function, gpointer user_data); -gulong modem_sms_connect_to_deliver(ModemSMSService *self, +gulong modem_sms_connect_to_deliver (ModemSMSService *self, ModemSMSDeliverHandler *user_function, gpointer user_data); -gboolean modem_sms_service_connect(ModemSMSService *self, char const *); -void modem_sms_service_disconnect(ModemSMSService *self); +gboolean modem_sms_service_connect (ModemSMSService *self, char const *); +void modem_sms_service_disconnect (ModemSMSService *self); -GError *modem_sms_service_connection_error(ModemSMSService *self); -gboolean modem_sms_service_is_connected(ModemSMSService const *self); -gboolean modem_sms_service_is_connecting(ModemSMSService const *self); +GError *modem_sms_service_connection_error (ModemSMSService *self); +gboolean modem_sms_service_is_connected (ModemSMSService const *self); +gboolean modem_sms_service_is_connecting (ModemSMSService const *self); -guint64 modem_sms_service_time_connected(ModemSMSService const *self); +guint64 modem_sms_service_time_connected (ModemSMSService const *self); /* ---------------------------------------------------------------------- */ -ModemRequest *modem_sms_set_sc_address(ModemSMSService *self, +ModemRequest *modem_sms_set_sc_address (ModemSMSService *self, char const *address, ModemSMSServiceReply *reply, gpointer user_data); -ModemRequest *modem_sms_set_srr(ModemSMSService *self, +ModemRequest *modem_sms_set_srr (ModemSMSService *self, gboolean srr, ModemSMSServiceReply *reply, gpointer user_data); -ModemRequest *modem_sms_request_send(ModemSMSService *self, +ModemRequest *modem_sms_request_send (ModemSMSService *self, char const *to, char const *message, ModemSMSServiceSendReply *reply, gpointer user_data); |