[PATCH] libmm-glib,sms: fix get|dup_data() introspection annotations

Colin Helliwell colin.helliwell at ln-systems.com
Tue Sep 26 15:08:22 UTC 2017


> On 26 September 2017 at 14:23 Aleksander Morgado <aleksander at aleksander.es> wrote:
> 
> We need to specify explicitly that the return type is an array of
> 
> guint8 elements.
> 
> ---
> 
> Hey Colin,
> 
> Could you apply this patch and see if the generated introspection support allows you to use the API? It should work as g_bytes_get_data(), i.e.:
> https://lazka.github.io/pgi-docs/#GLib-2.0/classes/Bytes.html#GLib.Bytes.get_data
> 
> ---
>  libmm-glib/mm-sms.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libmm-glib/mm-sms.c b/libmm-glib/mm-sms.c
> index a49deb88..0467b6c1 100644
> --- a/libmm-glib/mm-sms.c
> +++ b/libmm-glib/mm-sms.c
> @@ -131,7 +131,7 @@ mm_sms_dup_text (MMSms *self)
>  *
> 
> *   Gets the message data.
> *
> 
>     *   *   Returns: (transfer none): The message data, or %NULL if it doesn't contain any (e.g. contains text instead).
> 
>     *   *   Returns: (transfer none) (array length=data_len) (element-type guint8): The message data, or %NULL if it doesn't contain any (e.g. contains text instead).
> */
> const guint8 *
> mm_sms_get_data (MMSms *self,
> @@ -158,7 +158,7 @@ mm_sms_get_data (MMSms *self,
> *
> 
> *   Gets the message data.
> *
> 
>     *   *   Returns: (transfer full): The message data, or %NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_free().
> 
>     *   *   Returns: (transfer full) (array length=data_len) (element-type guint8): The message data, or %NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_free().
> */
> guint8 *
> mm_sms_dup_data (MMSms *self,
> --
> 2.14.1

Thanks Aleksander. I've tried this through a simple python console. 

For a textual message:

>>> m=rcvd[0]
>>> print m.get_number(), m.get_timestamp(), '"%s"' % m.get_text()
+447767999999 170925121806+01 "1217"
>>> m.get_data()
''
>>> type(m.get_data())
<type 'str'>
>>> len(m.get_data())
0


For a 'pdu' message:

>>> m=rcvd[2]
>>> print m.get_number(), m.get_timestamp(), '"%s"' % m.get_text()
+447979999999 170925133914+01 "None"
>>> m.get_data()
'\xde\xad\xbe\xef'
>>> type(m.get_data())
<type 'str'>
>>> len(m.get_data())
4


More information about the ModemManager-devel mailing list