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

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


> On 26 September 2017 at 16:08 Colin Helliwell <colin.helliwell at ln-systems.com> wrote:
> 
> > 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())
> > > > 
> > > > 
> > > > 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())
> > > > 
> > > > 
> > > > len(m.get_data())
> > > > 4
> > > > 


I haven't yet explored parsing that response format, but another example follows. Can you sanity-check? At first glance it looks a little odd.


mmcli -m 0 -s 1
SMS '/org/freedesktop/ModemManager1/SMS/1'
  -----------------------------------
  Content    |              number: '+447979116437'
             |                data: '079144872000302311000C914477310412820000AA08506215442DCFE9'
  -----------------------------------
  Properties |            PDU type: 'deliver'
             |               state: 'received'
             |             storage: 'me'
             |                smsc: '+447785016005'
             |           timestamp: '170925124043+01'



>>> m=rcvd[1]
>>> print m.get_number(), m.get_timestamp(), '"%s"' % m.get_text()
+447979999999 170925124043+01 "None"
>>> m.get_data()
'\x07\x91D\x87 \x000#\x11\x00\x0c\x91Dw1\x04\x12\x82\x00\x00\xaa\x08Pb\x15D-\xcf\xe9'
>>> type(m.get_data())
<type 'str'>
>>> len(m.get_data())
29


More information about the ModemManager-devel mailing list