aboutsummaryrefslogtreecommitdiff
path: root/cli/mmcli-call.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-10-27 14:46:38 +0200
committerDan Williams <dcbw@redhat.com>2018-11-26 16:51:35 +0000
commitb0fba14b1e122522a1db2581779ffb94ee7cfa37 (patch)
treef0ab362f9e124b7f01f8c7e1b97a84d0c40f3edc /cli/mmcli-call.c
parentcafc40245d2007ad3a9a33875fc6b71d25e6a254 (diff)
cli: allow multiple output format types
In addition to the standard human-friendly output, we now allow a machine-friendly key-value pair output, much easier to parse and use by programs that look at the mmcli output. This new key-value pair output should be treated as API from now on, so third-party programs can assume the output is compatible from one release to another.
Diffstat (limited to 'cli/mmcli-call.c')
-rw-r--r--cli/mmcli-call.c51
1 files changed, 19 insertions, 32 deletions
diff --git a/cli/mmcli-call.c b/cli/mmcli-call.c
index 09cf0871..d4930285 100644
--- a/cli/mmcli-call.c
+++ b/cli/mmcli-call.c
@@ -34,6 +34,7 @@
#include "mmcli.h"
#include "mmcli-common.h"
+#include "mmcli-output.h"
/* Context */
typedef struct {
@@ -145,45 +146,31 @@ mmcli_call_shutdown (void)
static void
print_call_info (MMCall *call)
{
- const gchar *audio_port;
MMCallAudioFormat *audio_format;
+ const gchar *encoding = NULL;
+ const gchar *resolution = NULL;
+ gchar *rate = NULL;
- audio_port = mm_call_get_audio_port (call);
audio_format = mm_call_peek_audio_format (call);
- /* Not the best thing to do, as we may be doing _get() calls twice, but
- * easiest to maintain */
-#undef VALIDATE
-#define VALIDATE(str) (str ? str : "unknown")
-
- g_print ("CALL '%s'\n", mm_call_get_path (call));
- g_print (" -------------------------------\n"
- " Global | number: '%s'\n", VALIDATE (mm_call_get_number (call)));
- g_print (" | direction: '%s'\n", mm_call_direction_get_string (mm_call_get_direction (call)) );
-
- g_print (" -------------------------------\n"
- " Properties | state: '%s'\n", mm_call_state_get_string (mm_call_get_state (call)));
-
- if (mm_call_get_state_reason(call) != MM_CALL_STATE_REASON_UNKNOWN)
- g_print (" | state reason: '%s'\n",
- mm_call_state_reason_get_string(mm_call_get_state_reason (call)));
-
- if (audio_port)
- g_print (" | audio port: '%s'\n", VALIDATE (audio_port));
+ mmcli_output_string (MMC_F_CALL_GENERAL_DBUS_PATH, mm_call_get_path (call));
+ mmcli_output_string (MMC_F_CALL_PROPERTIES_NUMBER, mm_call_get_number (call));
+ mmcli_output_string (MMC_F_CALL_PROPERTIES_DIRECTION, mm_call_direction_get_string (mm_call_get_direction (call)));
+ mmcli_output_string (MMC_F_CALL_PROPERTIES_STATE, mm_call_state_get_string (mm_call_get_state (call)));
+ mmcli_output_string (MMC_F_CALL_PROPERTIES_STATE_REASON, mm_call_state_get_string (mm_call_get_state_reason (call)));
+ mmcli_output_string (MMC_F_CALL_PROPERTIES_AUDIO_PORT, mm_call_get_audio_port (call));
if (audio_format) {
- guint rate = mm_call_audio_format_get_rate (audio_format);
- gchar *rate_str = rate ? g_strdup_printf ("%u", rate) : NULL;
-
- g_print (" -------------------------\n"
- " Audio Format | encoding: '%s'\n"
- " | resolution: '%s'\n"
- " | rate: '%s'\n",
- VALIDATE (mm_call_audio_format_get_encoding (audio_format)),
- VALIDATE (mm_call_audio_format_get_resolution (audio_format)),
- VALIDATE (rate_str));
- g_free (rate_str);
+ rate = g_strdup_printf ("%u", mm_call_audio_format_get_rate (audio_format));
+ encoding = mm_call_audio_format_get_encoding (audio_format);
+ resolution = mm_call_audio_format_get_resolution (audio_format);
}
+
+ mmcli_output_string (MMC_F_CALL_AUDIO_FORMAT_ENCODING, encoding);
+ mmcli_output_string (MMC_F_CALL_AUDIO_FORMAT_RESOLUTION, resolution);
+ mmcli_output_string_take (MMC_F_CALL_AUDIO_FORMAT_RATE, rate);
+
+ mmcli_output_dump ();
}
static void