aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-09-12 13:08:36 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-09-14 07:05:26 +0200
commit8e6a6035780da3ccc18e5eb9c30eb40ab4ea9885 (patch)
treef2bb7a5876159109249a92a152374d98bfc9b5d2
parenta66f971a7cdea4bf1d9f6390e12f950f41ee5595 (diff)
libmm-glib: provide accessors for the 'Data' property in the SMS interface
-rw-r--r--libmm-glib/mm-sms.c67
-rw-r--r--libmm-glib/mm-sms.h40
2 files changed, 89 insertions, 18 deletions
diff --git a/libmm-glib/mm-sms.c b/libmm-glib/mm-sms.c
index e6d77aa2..af8e4350 100644
--- a/libmm-glib/mm-sms.c
+++ b/libmm-glib/mm-sms.c
@@ -20,6 +20,8 @@
* Copyright (C) 2012 Google, Inc.
*/
+#include "string.h"
+
#include "mm-helpers.h"
#include "mm-sms.h"
#include "mm-modem.h"
@@ -100,6 +102,71 @@ mm_sms_dup_text (MMSms *self)
}
/**
+ * mm_sms_get_data:
+ * @self: A #MMSms.
+ * @data_len: (out) Size of the output data, if any given.
+ *
+ * TODO
+ *
+ * Returns: (transfer none): The data, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ */
+const guint8 *
+mm_sms_get_data (MMSms *self,
+ gsize *data_len)
+{
+ GVariant *data;
+
+ g_return_val_if_fail (MM_GDBUS_IS_SMS (self), NULL);
+
+ data = mm_gdbus_sms_get_data (MM_GDBUS_SMS (self));
+ return (data ?
+ g_variant_get_fixed_array (
+ mm_gdbus_sms_get_data (MM_GDBUS_SMS (self)),
+ data_len,
+ sizeof (guchar)):
+ NULL);
+}
+
+/**
+ * mm_sms_dup_data:
+ * @self: A #MMSms.
+ * @data_len: (out) Size of the output data, if any given.
+ *
+ * TODO
+ *
+ * Returns: (transfer full): The data, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ */
+guint8 *
+mm_sms_dup_data (MMSms *self,
+ gsize *data_len)
+{
+ guint8 *out;
+ GVariant *data_variant;
+ const guint8 *orig_data;
+ gsize orig_data_len = 0;
+
+ g_return_val_if_fail (MM_GDBUS_IS_SMS (self), NULL);
+
+ /* Get a ref to ensure the variant is valid as long as we use it */
+ data_variant = mm_gdbus_sms_dup_data (MM_GDBUS_SMS (self));
+ if (!data_variant)
+ return NULL;
+
+ orig_data = (g_variant_get_fixed_array (
+ mm_gdbus_sms_get_data (MM_GDBUS_SMS (self)),
+ &orig_data_len,
+ sizeof (guchar)));
+
+ out = g_new (guint8, orig_data_len);
+ memcpy (out, orig_data, orig_data_len);
+ g_variant_unref (data_variant);
+
+ if (data_len)
+ *data_len = orig_data_len;
+ return out;
+}
+
+/**
* mm_sms_get_number:
* @self: A #MMSms.
*
diff --git a/libmm-glib/mm-sms.h b/libmm-glib/mm-sms.h
index a6a35a1c..bb73ce0b 100644
--- a/libmm-glib/mm-sms.h
+++ b/libmm-glib/mm-sms.h
@@ -73,24 +73,28 @@ gboolean mm_sms_store_sync (MMSms *self,
GCancellable *cancellable,
GError **error);
-const gchar *mm_sms_get_text (MMSms *self);
-gchar *mm_sms_dup_text (MMSms *self);
-const gchar *mm_sms_get_number (MMSms *self);
-gchar *mm_sms_dup_number (MMSms *self);
-const gchar *mm_sms_get_smsc (MMSms *self);
-gchar *mm_sms_dup_smsc (MMSms *self);
-const gchar *mm_sms_get_timestamp (MMSms *self);
-gchar *mm_sms_dup_timestamp (MMSms *self);
-const gchar *mm_sms_get_discharge_timestamp (MMSms *self);
-gchar *mm_sms_dup_discharge_timestamp (MMSms *self);
-guint mm_sms_get_validity (MMSms *self);
-guint mm_sms_get_class (MMSms *self);
-guint mm_sms_get_message_reference (MMSms *self);
-gboolean mm_sms_get_delivery_report_request (MMSms *self);
-guint mm_sms_get_delivery_state (MMSms *self);
-MMSmsState mm_sms_get_state (MMSms *self);
-MMSmsStorage mm_sms_get_storage (MMSms *self);
-MMSmsPduType mm_sms_get_pdu_type (MMSms *self);
+const gchar *mm_sms_get_text (MMSms *self);
+gchar *mm_sms_dup_text (MMSms *self);
+const guint8 *mm_sms_get_data (MMSms *self,
+ gsize *data_len);
+guint8 *mm_sms_dup_data (MMSms *self,
+ gsize *data_len);
+const gchar *mm_sms_get_number (MMSms *self);
+gchar *mm_sms_dup_number (MMSms *self);
+const gchar *mm_sms_get_smsc (MMSms *self);
+gchar *mm_sms_dup_smsc (MMSms *self);
+const gchar *mm_sms_get_timestamp (MMSms *self);
+gchar *mm_sms_dup_timestamp (MMSms *self);
+const gchar *mm_sms_get_discharge_timestamp (MMSms *self);
+gchar *mm_sms_dup_discharge_timestamp (MMSms *self);
+guint mm_sms_get_validity (MMSms *self);
+guint mm_sms_get_class (MMSms *self);
+guint mm_sms_get_message_reference (MMSms *self);
+gboolean mm_sms_get_delivery_report_request (MMSms *self);
+guint mm_sms_get_delivery_state (MMSms *self);
+MMSmsState mm_sms_get_state (MMSms *self);
+MMSmsStorage mm_sms_get_storage (MMSms *self);
+MMSmsPduType mm_sms_get_pdu_type (MMSms *self);
G_END_DECLS