diff options
-rw-r--r-- | cli/mmcli-manager.c | 18 | ||||
-rw-r--r-- | docs/reference/libmm-glib/libmm-glib-sections.txt | 1 | ||||
-rw-r--r-- | introspection/org.freedesktop.ModemManager1.xml | 7 | ||||
-rw-r--r-- | libmm-glib/mm-manager.c | 29 | ||||
-rw-r--r-- | libmm-glib/mm-manager.h | 2 | ||||
-rw-r--r-- | src/mm-base-manager.c | 2 |
6 files changed, 54 insertions, 5 deletions
diff --git a/cli/mmcli-manager.c b/cli/mmcli-manager.c index 41bda211..810b0aa3 100644 --- a/cli/mmcli-manager.c +++ b/cli/mmcli-manager.c @@ -51,6 +51,7 @@ typedef struct { static Context *ctx; /* Options */ +static gboolean get_daemon_version_flag; static gboolean list_modems_flag; static gboolean monitor_modems_flag; static gboolean scan_modems_flag; @@ -62,6 +63,10 @@ static gboolean report_kernel_event_auto_scan; #endif static GOptionEntry entries[] = { + { "get-daemon-version", 'B', 0, G_OPTION_ARG_NONE, &get_daemon_version_flag, + "Get ModemManager daemon version", + NULL + }, { "set-logging", 'G', 0, G_OPTION_ARG_STRING, &set_logging_str, "Set logging level in the ModemManager daemon", "[ERR,WARN,INFO,DEBUG]", @@ -116,7 +121,8 @@ mmcli_manager_options_enabled (void) if (checked) return !!n_actions; - n_actions = (list_modems_flag + + n_actions = (get_daemon_version_flag + + list_modems_flag + monitor_modems_flag + scan_modems_flag + !!set_logging_str + @@ -131,7 +137,9 @@ mmcli_manager_options_enabled (void) exit (EXIT_FAILURE); } - if (monitor_modems_flag) { + if (get_daemon_version_flag) + mmcli_force_sync_operation (); + else if (monitor_modems_flag) { if (mmcli_output_get () != MMC_OUTPUT_TYPE_HUMAN) { g_printerr ("error: modem monitoring not available in keyvalue output\n"); exit (EXIT_FAILURE); @@ -495,6 +503,12 @@ mmcli_manager_run_synchronous (GDBusConnection *connection) ctx = g_new0 (Context, 1); ctx->manager = mmcli_get_manager_sync (connection); + /* Get daemon version? */ + if (get_daemon_version_flag) { + g_print ("ModemManager daemon %s running\n", mm_manager_get_version (ctx->manager)); + return; + } + /* Setup operation timeout */ mmcli_force_operation_timeout (mm_manager_peek_proxy (ctx->manager)); diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt index 81e9f1e4..69e0731d 100644 --- a/docs/reference/libmm-glib/libmm-glib-sections.txt +++ b/docs/reference/libmm-glib/libmm-glib-sections.txt @@ -14,6 +14,7 @@ mm_manager_new mm_manager_new_finish mm_manager_new_sync <SUBSECTION Methods> +mm_manager_get_version mm_manager_scan_devices mm_manager_scan_devices_finish mm_manager_scan_devices_sync diff --git a/introspection/org.freedesktop.ModemManager1.xml b/introspection/org.freedesktop.ModemManager1.xml index 49503c1d..4d7a4e84 100644 --- a/introspection/org.freedesktop.ModemManager1.xml +++ b/introspection/org.freedesktop.ModemManager1.xml @@ -106,5 +106,12 @@ <arg name="properties" type="a{sv}" direction="in" /> </method> + <!-- + Version: + + The runtime version of the ModemManager daemon. + --> + <property name="Version" type="s" access="read" /> + </interface> </node> diff --git a/libmm-glib/mm-manager.c b/libmm-glib/mm-manager.c index 9276c159..e33ec038 100644 --- a/libmm-glib/mm-manager.c +++ b/libmm-glib/mm-manager.c @@ -17,14 +17,13 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * Copyright (C) 2011 - 2012 Aleksander Morgado <aleksander@gnu.org> * Copyright (C) 2011 - 2012 Google, Inc. - * - * Author: Aleksander Morgado <aleksander@lanedo.com> + * Copyright (C) 2011 - 2018 Aleksander Morgado <aleksander@aleksander.es> */ #include <ModemManager.h> +#include "mm-helpers.h" #include "mm-errors-types.h" #include "mm-gdbus-manager.h" #include "mm-manager.h" @@ -266,6 +265,30 @@ mm_manager_get_proxy (MMManager *manager) /*****************************************************************************/ /** + * mm_manager_get_version: + * @manager: A #MMManager. + * + * Gets the ModemManager version, as reported by the daemon. + * + * It is safe to assume this value never changes during runtime. + * + * Returns: (transfer none): The version, or %NULL if none available. Do not free the returned value, it belongs to @self. + */ +const gchar * +mm_manager_get_version (MMManager *manager) +{ + g_return_val_if_fail (MM_IS_MANAGER (manager), NULL); + + if (!ensure_modem_manager1_proxy (manager, NULL)) + return NULL; + + RETURN_NON_EMPTY_CONSTANT_STRING ( + mm_gdbus_org_freedesktop_modem_manager1_get_version (manager->priv->manager_iface_proxy)); +} + +/*****************************************************************************/ + +/** * mm_manager_set_logging_finish: * @manager: A #MMManager. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_set_logging(). diff --git a/libmm-glib/mm-manager.h b/libmm-glib/mm-manager.h index 57a129f5..fc79a984 100644 --- a/libmm-glib/mm-manager.h +++ b/libmm-glib/mm-manager.h @@ -85,6 +85,8 @@ MMManager *mm_manager_new_sync ( GDBusProxy *mm_manager_peek_proxy (MMManager *manager); GDBusProxy *mm_manager_get_proxy (MMManager *manager); +const gchar *mm_manager_get_version (MMManager *manager); + void mm_manager_set_logging (MMManager *manager, const gchar *level, GCancellable *cancellable, diff --git a/src/mm-base-manager.c b/src/mm-base-manager.c index be92b5e2..b2dabfdd 100644 --- a/src/mm-base-manager.c +++ b/src/mm-base-manager.c @@ -36,6 +36,7 @@ #include <mm-gdbus-manager.h> #include <mm-gdbus-test.h> +#include "mm-context.h" #include "mm-base-manager.h" #include "mm-daemon-enums-types.h" #include "mm-device.h" @@ -988,6 +989,7 @@ mm_base_manager_new (GDBusConnection *connection, MM_BASE_MANAGER_FILTER_POLICY, filter_policy, MM_BASE_MANAGER_INITIAL_KERNEL_EVENTS, initial_kernel_events, MM_BASE_MANAGER_ENABLE_TEST, enable_test, + "version", MM_DIST_VERSION, NULL); } |