libmm-glib,nmea: new method to get list of traces

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/120
This commit is contained in:
Aleksander Morgado
2019-12-31 16:41:28 +01:00
parent 21e5b1d683
commit 9805ffe1b0
3 changed files with 41 additions and 3 deletions

View File

@@ -528,6 +528,7 @@ mm_location_3gpp_get_type
MMLocationGpsNmea
<SUBSECTION Getters>
mm_location_gps_nmea_get_trace
mm_location_gps_nmea_get_traces
mm_location_gps_nmea_build_full
<SUBSECTION Private>
mm_location_gps_nmea_new

View File

@@ -152,6 +152,42 @@ mm_location_gps_nmea_get_trace (MMLocationGpsNmea *self,
/*****************************************************************************/
static void
build_all_foreach (const gchar *trace_type,
const gchar *trace,
GPtrArray **built)
{
if (*built == NULL)
*built = g_ptr_array_new ();
g_ptr_array_add (*built, g_strdup (trace));
}
/**
* mm_location_gps_nmea_get_traces:
* @self: a #MMLocationGpsNmea.
*
* Gets all cached traces.
*
* Returns: (transfer full): The list of traces, or %NULL if none available. The returned value should be freed with g_strfreev().
* Since: 1.14
*/
gchar **
mm_location_gps_nmea_get_traces (MMLocationGpsNmea *self)
{
GPtrArray *built = NULL;
g_hash_table_foreach (self->priv->traces,
(GHFunc)build_all_foreach,
&built);
if (!built)
return NULL;
g_ptr_array_add (built, NULL);
return (gchar **) g_ptr_array_free (built, FALSE);
}
/*****************************************************************************/
static void
build_full_foreach (const gchar *trace_type,
const gchar *trace,

View File

@@ -59,9 +59,10 @@ GType mm_location_gps_nmea_get_type (void);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMLocationGpsNmea, g_object_unref)
#endif
const gchar *mm_location_gps_nmea_get_trace (MMLocationGpsNmea *self,
const gchar *trace_type);
gchar *mm_location_gps_nmea_build_full (MMLocationGpsNmea *self);
const gchar *mm_location_gps_nmea_get_trace (MMLocationGpsNmea *self,
const gchar *trace_type);
gchar **mm_location_gps_nmea_get_traces (MMLocationGpsNmea *self);
gchar *mm_location_gps_nmea_build_full (MMLocationGpsNmea *self);
/*****************************************************************************/
/* ModemManager/libmm-glib/mmcli specific methods */