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:

committed by
Dan Williams

parent
d0bb8d1d50
commit
c7af14cc80
@@ -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));
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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>
|
||||
|
@@ -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"
|
||||
@@ -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:
|
||||
* @manager: A #MMManager.
|
||||
|
@@ -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,
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user