aboutsummaryrefslogtreecommitdiff
path: root/cli/mmcli-modem-signal.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-modem-signal.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-modem-signal.c')
-rw-r--r--cli/mmcli-modem-signal.c106
1 files changed, 64 insertions, 42 deletions
diff --git a/cli/mmcli-modem-signal.c b/cli/mmcli-modem-signal.c
index bb64517d..fa45f102 100644
--- a/cli/mmcli-modem-signal.c
+++ b/cli/mmcli-modem-signal.c
@@ -33,6 +33,7 @@
#include "mmcli.h"
#include "mmcli-common.h"
+#include "mmcli-output.h"
/* Context */
typedef struct {
@@ -133,71 +134,92 @@ mmcli_modem_signal_shutdown (void)
}
static void
-print_signal_value (const gchar *prefix,
- gdouble value,
- const gchar *units)
-{
- if (value != MM_SIGNAL_UNKNOWN)
- g_print ("%s'%.2lf' %s\n", prefix, value, units);
- else
- g_print ("%s'n/a'\n", prefix);
-}
-
-static void
print_signal_info (void)
{
MMSignal *signal;
+ gdouble value;
+ gchar *refresh_rate;
+ gchar *cdma1x_rssi = NULL;
+ gchar *cdma1x_ecio = NULL;
+ gchar *evdo_rssi = NULL;
+ gchar *evdo_ecio = NULL;
+ gchar *evdo_sinr = NULL;
+ gchar *evdo_io = NULL;
+ gchar *gsm_rssi = NULL;
+ gchar *umts_rssi = NULL;
+ gchar *umts_rscp = NULL;
+ gchar *umts_ecio = NULL;
+ gchar *lte_rssi = NULL;
+ gchar *lte_rsrp = NULL;
+ gchar *lte_rsrq = NULL;
+ gchar *lte_snr = NULL;
+
+ refresh_rate = g_strdup_printf ("%u", mm_modem_signal_get_rate (ctx->modem_signal));
- g_print ("\n"
- "%s\n"
- " -------------------------\n"
- " Signal | Refresh rate: '%u' seconds\n",
- mm_modem_signal_get_path (ctx->modem_signal),
- mm_modem_signal_get_rate (ctx->modem_signal));
-
- /* CDMA */
signal = mm_modem_signal_peek_cdma (ctx->modem_signal);
if (signal) {
- g_print (" -------------------------\n");
- print_signal_value (" CDMA1x | RSSI: ", mm_signal_get_rssi (signal), "dBm");
- print_signal_value (" | EcIo: ", mm_signal_get_ecio (signal), "dBm");
+ if ((value = mm_signal_get_rssi (signal)) != MM_SIGNAL_UNKNOWN)
+ cdma1x_rssi = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_ecio (signal)) != MM_SIGNAL_UNKNOWN)
+ cdma1x_ecio = g_strdup_printf ("%.2lf", value);
}
- /* EVDO */
signal = mm_modem_signal_peek_evdo (ctx->modem_signal);
if (signal) {
- g_print (" -------------------------\n");
- print_signal_value (" EV-DO | RSSI: ", mm_signal_get_rssi (signal), "dBm");
- print_signal_value (" | EcIo: ", mm_signal_get_ecio (signal), "dB");
- print_signal_value (" | SINR: ", mm_signal_get_sinr (signal), "dB");
- print_signal_value (" | Io: ", mm_signal_get_io (signal), "dBm");
+ if ((value = mm_signal_get_rssi (signal)) != MM_SIGNAL_UNKNOWN)
+ evdo_rssi = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_ecio (signal)) != MM_SIGNAL_UNKNOWN)
+ evdo_ecio = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_sinr (signal)) != MM_SIGNAL_UNKNOWN)
+ evdo_sinr = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_io (signal)) != MM_SIGNAL_UNKNOWN)
+ evdo_io = g_strdup_printf ("%.2lf", value);
}
- /* GSM */
signal = mm_modem_signal_peek_gsm (ctx->modem_signal);
if (signal) {
- g_print (" -------------------------\n");
- print_signal_value (" GSM | RSSI: ", mm_signal_get_rssi (signal), "dBm");
+ if ((value = mm_signal_get_rssi (signal)) != MM_SIGNAL_UNKNOWN)
+ gsm_rssi = g_strdup_printf ("%.2lf", value);
}
- /* UMTS */
signal = mm_modem_signal_peek_umts (ctx->modem_signal);
if (signal) {
- g_print (" -------------------------\n");
- print_signal_value (" UMTS | RSSI: ", mm_signal_get_rssi (signal), "dBm");
- print_signal_value (" | RSCP: ", mm_signal_get_rscp (signal), "dBm");
- print_signal_value (" | EcIo: ", mm_signal_get_ecio (signal), "dB");
+ if ((value = mm_signal_get_rssi (signal)) != MM_SIGNAL_UNKNOWN)
+ umts_rssi = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_rscp (signal)) != MM_SIGNAL_UNKNOWN)
+ umts_rscp = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_ecio (signal)) != MM_SIGNAL_UNKNOWN)
+ umts_ecio = g_strdup_printf ("%.2lf", value);
}
- /* LTE */
signal = mm_modem_signal_peek_lte (ctx->modem_signal);
if (signal) {
- g_print (" -------------------------\n");
- print_signal_value (" LTE | RSSI: ", mm_signal_get_rssi (signal), "dBm");
- print_signal_value (" | RSRQ: ", mm_signal_get_rsrq (signal), "dB");
- print_signal_value (" | RSRP: ", mm_signal_get_rsrp (signal), "dBm");
- print_signal_value (" | S/N: ", mm_signal_get_snr (signal), "dB");
+ if ((value = mm_signal_get_rssi (signal)) != MM_SIGNAL_UNKNOWN)
+ lte_rssi = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_rsrq (signal)) != MM_SIGNAL_UNKNOWN)
+ lte_rsrq = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_rsrp (signal)) != MM_SIGNAL_UNKNOWN)
+ lte_rsrp = g_strdup_printf ("%.2lf", value);
+ if ((value = mm_signal_get_snr (signal)) != MM_SIGNAL_UNKNOWN)
+ lte_snr = g_strdup_printf ("%.2lf", value);
}
+
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_REFRESH_RATE, refresh_rate, "seconds");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_CDMA1X_RSSI, cdma1x_rssi, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_CDMA1X_ECIO, cdma1x_ecio, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_EVDO_RSSI, evdo_rssi, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_EVDO_ECIO, evdo_ecio, "dB");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_EVDO_SINR, evdo_sinr, "dB");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_EVDO_IO, evdo_io, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_GSM_RSSI, gsm_rssi, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_UMTS_RSSI, umts_rssi, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_UMTS_RSCP, umts_rscp, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_UMTS_ECIO, umts_ecio, "dB");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_LTE_RSSI, lte_rssi, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_LTE_RSRQ, lte_rsrq, "dB");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_LTE_RSRP, lte_rsrp, "dBm");
+ mmcli_output_string_take_typed (MMC_F_SIGNAL_LTE_SNR, lte_snr, "dB");
+ mmcli_output_dump ();
}
static void