diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-10-27 14:46:38 +0200 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2018-11-26 16:51:35 +0000 |
commit | b0fba14b1e122522a1db2581779ffb94ee7cfa37 (patch) | |
tree | f0ab362f9e124b7f01f8c7e1b97a84d0c40f3edc /cli/mmcli-modem-signal.c | |
parent | cafc40245d2007ad3a9a33875fc6b71d25e6a254 (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.c | 106 |
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 |