diff options
author | Angus Ainslie <angus@akkea.ca> | 2020-12-27 00:12:18 +0000 |
---|---|---|
committer | Angus Ainslie <angus@akkea.ca> | 2021-01-09 08:56:24 -0800 |
commit | 6ebfc32f636b6e48ffab32c6286348166a351cd2 (patch) | |
tree | 5a8a68482b0fdf77473d4ec6be650600dce6c789 | |
parent | 943f4af2870a1b87ec47f4a07eca057308d4198c (diff) | |
download | geoclue-6ebfc32f636b6e48ffab32c6286348166a351cd2.tar.gz |
src/gclue-nmea-source.c: add a unix socket file option
Make the unix socket option and an option to specify the path.
Signed-off-by: Angus Ainslie <angus@akkea.ca>
-rw-r--r-- | data/geoclue.conf.in | 3 | ||||
-rw-r--r-- | src/gclue-config.c | 14 | ||||
-rw-r--r-- | src/gclue-config.h | 4 | ||||
-rw-r--r-- | src/gclue-main.c | 10 | ||||
-rw-r--r-- | src/gclue-nmea-source.c | 7 |
5 files changed, 38 insertions, 0 deletions
diff --git a/data/geoclue.conf.in b/data/geoclue.conf.in index bebe471..5478bc2 100644 --- a/data/geoclue.conf.in +++ b/data/geoclue.conf.in @@ -18,6 +18,9 @@ whitelist=@demo_agent@gnome-shell;io.elementary.desktop.agent-geoclue2 # Fetch location from NMEA sources on local network? enable=true +# use aa nmea unix socket as the data source +# nmea-socket=/var/run/gps-share.sock + # 3G source configuration options [3g] diff --git a/src/gclue-config.c b/src/gclue-config.c index 95f78df..8e07910 100644 --- a/src/gclue-config.c +++ b/src/gclue-config.c @@ -45,6 +45,7 @@ struct _GClueConfigPrivate gboolean enable_wifi_source; char *wifi_submit_url; char *wifi_submit_nick; + char *nmea_socket; GList *app_configs; }; @@ -433,6 +434,12 @@ gclue_config_is_system_component (GClueConfig *config, } const char * +gclue_config_get_nmea_socket (GClueConfig *config) +{ + return config->priv->nmea_socket; +} + +const char * gclue_config_get_wifi_url (GClueConfig *config) { return config->priv->wifi_url; @@ -495,6 +502,13 @@ gclue_config_get_enable_nmea_source (GClueConfig *config) } void +gclue_config_set_nmea_socket (GClueConfig *config, + const char *nmea_socket) +{ + config->priv->nmea_socket = g_strdup(nmea_socket); +} + +void gclue_config_set_wifi_submit_data (GClueConfig *config, gboolean submit) { diff --git a/src/gclue-config.h b/src/gclue-config.h index 6dc10c9..bcf0bef 100644 --- a/src/gclue-config.h +++ b/src/gclue-config.h @@ -73,6 +73,10 @@ GClueAppPerm gclue_config_get_app_perm (GClueConfig *config GClueClientInfo *app_info); gboolean gclue_config_is_system_component (GClueConfig *config, const char *desktop_id); +const char * gclue_config_get_nmea_socket (GClueConfig *config); +void gclue_config_set_nmea_socket (GClueConfig *config, + const char *nmea_socket); + const char * gclue_config_get_wifi_url (GClueConfig *config); const char * gclue_config_get_wifi_submit_url (GClueConfig *config); const char * gclue_config_get_wifi_submit_nick (GClueConfig *config); diff --git a/src/gclue-main.c b/src/gclue-main.c index 811666f..d14cadc 100644 --- a/src/gclue-main.c +++ b/src/gclue-main.c @@ -36,6 +36,7 @@ static gboolean version = FALSE; static gint inactivity_timeout = 60; static gboolean submit_data = FALSE; static char *submit_nick = NULL; +static char *nmea_socket = NULL; static GOptionEntry entries[] = { @@ -67,6 +68,13 @@ static GOptionEntry entries[] = &submit_nick, N_("Nickname to submit network data under (2-32 characters)"), "NICK" }, + { "nmea-socket", + 'u', + 0, + G_OPTION_ARG_STRING, + &nmea_socket, + N_("Path to nmea UNIX socket"), + NULL }, { NULL } }; @@ -180,6 +188,8 @@ main (int argc, char **argv) gclue_config_set_wifi_submit_data (config, submit_data); if (submit_nick != NULL) gclue_config_set_wifi_submit_nick (config, submit_nick); + if (nmea_socket != NULL) + gclue_config_set_nmea_socket (config, nmea_socket); owner_id = g_bus_own_name (G_BUS_TYPE_SYSTEM, BUS_NAME, diff --git a/src/gclue-nmea-source.c b/src/gclue-nmea-source.c index 9f7e6cf..bf0bea8 100644 --- a/src/gclue-nmea-source.c +++ b/src/gclue-nmea-source.c @@ -23,6 +23,7 @@ #include <stdlib.h> #include <glib.h> +#include "gclue-config.h" #include "gclue-nmea-source.h" #include "gclue-location.h" #include "config.h" @@ -675,6 +676,8 @@ gclue_nmea_source_init (GClueNMEASource *source) AvahiServiceBrowser *service_browser; const AvahiPoll *poll_api; AvahiGLibPoll *glib_poll; + const char *nmea_socket; + GClueConfig *config; int error; source->priv = G_TYPE_INSTANCE_GET_PRIVATE ((source), @@ -687,6 +690,10 @@ gclue_nmea_source_init (GClueNMEASource *source) priv->cancellable = g_cancellable_new (); + config = gclue_config_get_singleton (); + + nmea_socket = gclue_config_get_nmea_socket (config); + avahi_client_new (poll_api, 0, client_callback, |