api,manager: new 'Version' property

This string shows the runtime version of the ModemManager daemon.

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/94
This commit is contained in:
Aleksander Morgado
2018-12-03 15:21:29 +01:00
committed by Dan Williams
parent d0bb8d1d50
commit c7af14cc80
6 changed files with 54 additions and 5 deletions

View File

@@ -51,6 +51,7 @@ typedef struct {
static Context *ctx; static Context *ctx;
/* Options */ /* Options */
static gboolean get_daemon_version_flag;
static gboolean list_modems_flag; static gboolean list_modems_flag;
static gboolean monitor_modems_flag; static gboolean monitor_modems_flag;
static gboolean scan_modems_flag; static gboolean scan_modems_flag;
@@ -62,6 +63,10 @@ static gboolean report_kernel_event_auto_scan;
#endif #endif
static GOptionEntry entries[] = { 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", 'G', 0, G_OPTION_ARG_STRING, &set_logging_str,
"Set logging level in the ModemManager daemon", "Set logging level in the ModemManager daemon",
"[ERR,WARN,INFO,DEBUG]", "[ERR,WARN,INFO,DEBUG]",
@@ -116,7 +121,8 @@ mmcli_manager_options_enabled (void)
if (checked) if (checked)
return !!n_actions; return !!n_actions;
n_actions = (list_modems_flag + n_actions = (get_daemon_version_flag +
list_modems_flag +
monitor_modems_flag + monitor_modems_flag +
scan_modems_flag + scan_modems_flag +
!!set_logging_str + !!set_logging_str +
@@ -131,7 +137,9 @@ mmcli_manager_options_enabled (void)
exit (EXIT_FAILURE); 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) { if (mmcli_output_get () != MMC_OUTPUT_TYPE_HUMAN) {
g_printerr ("error: modem monitoring not available in keyvalue output\n"); g_printerr ("error: modem monitoring not available in keyvalue output\n");
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
@@ -495,6 +503,12 @@ mmcli_manager_run_synchronous (GDBusConnection *connection)
ctx = g_new0 (Context, 1); ctx = g_new0 (Context, 1);
ctx->manager = mmcli_get_manager_sync (connection); 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 */ /* Setup operation timeout */
mmcli_force_operation_timeout (mm_manager_peek_proxy (ctx->manager)); mmcli_force_operation_timeout (mm_manager_peek_proxy (ctx->manager));

View File

@@ -14,6 +14,7 @@ mm_manager_new
mm_manager_new_finish mm_manager_new_finish
mm_manager_new_sync mm_manager_new_sync
<SUBSECTION Methods> <SUBSECTION Methods>
mm_manager_get_version
mm_manager_scan_devices mm_manager_scan_devices
mm_manager_scan_devices_finish mm_manager_scan_devices_finish
mm_manager_scan_devices_sync mm_manager_scan_devices_sync

View File

@@ -106,5 +106,12 @@
<arg name="properties" type="a{sv}" direction="in" /> <arg name="properties" type="a{sv}" direction="in" />
</method> </method>
<!--
Version:
The runtime version of the ModemManager daemon.
-->
<property name="Version" type="s" access="read" />
</interface> </interface>
</node> </node>

View File

@@ -17,14 +17,13 @@
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA. * Boston, MA 02110-1301 USA.
* *
* Copyright (C) 2011 - 2012 Aleksander Morgado <aleksander@gnu.org>
* Copyright (C) 2011 - 2012 Google, Inc. * Copyright (C) 2011 - 2012 Google, Inc.
* * Copyright (C) 2011 - 2018 Aleksander Morgado <aleksander@aleksander.es>
* Author: Aleksander Morgado <aleksander@lanedo.com>
*/ */
#include <ModemManager.h> #include <ModemManager.h>
#include "mm-helpers.h"
#include "mm-errors-types.h" #include "mm-errors-types.h"
#include "mm-gdbus-manager.h" #include "mm-gdbus-manager.h"
#include "mm-manager.h" #include "mm-manager.h"
@@ -265,6 +264,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: * mm_manager_set_logging_finish:
* @manager: A #MMManager. * @manager: A #MMManager.

View File

@@ -85,6 +85,8 @@ MMManager *mm_manager_new_sync (
GDBusProxy *mm_manager_peek_proxy (MMManager *manager); GDBusProxy *mm_manager_peek_proxy (MMManager *manager);
GDBusProxy *mm_manager_get_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, void mm_manager_set_logging (MMManager *manager,
const gchar *level, const gchar *level,
GCancellable *cancellable, GCancellable *cancellable,

View File

@@ -36,6 +36,7 @@
#include <mm-gdbus-manager.h> #include <mm-gdbus-manager.h>
#include <mm-gdbus-test.h> #include <mm-gdbus-test.h>
#include "mm-context.h"
#include "mm-base-manager.h" #include "mm-base-manager.h"
#include "mm-daemon-enums-types.h" #include "mm-daemon-enums-types.h"
#include "mm-device.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_FILTER_POLICY, filter_policy,
MM_BASE_MANAGER_INITIAL_KERNEL_EVENTS, initial_kernel_events, MM_BASE_MANAGER_INITIAL_KERNEL_EVENTS, initial_kernel_events,
MM_BASE_MANAGER_ENABLE_TEST, enable_test, MM_BASE_MANAGER_ENABLE_TEST, enable_test,
"version", MM_DIST_VERSION,
NULL); NULL);
} }