summaryrefslogtreecommitdiff
path: root/cli/mmcli-sms.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-sms.c
parentcafc40245d2007ad3a9a33875fc6b71d25e6a254 (diff)
downloadModemManager-b0fba14b1e122522a1db2581779ffb94ee7cfa37.tar.gz
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-sms.c')
-rw-r--r--cli/mmcli-sms.c117
1 files changed, 39 insertions, 78 deletions
diff --git a/cli/mmcli-sms.c b/cli/mmcli-sms.c
index 1fd88178b..575e35440 100644
--- a/cli/mmcli-sms.c
+++ b/cli/mmcli-sms.c
@@ -33,6 +33,7 @@
#include "mmcli.h"
#include "mmcli-common.h"
+#include "mmcli-output.h"
/* Context */
typedef struct {
@@ -147,89 +148,49 @@ mmcli_sms_shutdown (void)
static void
print_sms_info (MMSms *sms)
{
- MMSmsPduType pdu_type;
- const guint8 *data;
- gsize data_size;
-
- /* 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")
-
- pdu_type = mm_sms_get_pdu_type (sms);
-
- g_print ("SMS '%s'\n",
- mm_sms_get_path (sms));
- g_print (" -----------------------------------\n"
- " Content | number: '%s'\n",
- VALIDATE (mm_sms_get_number (sms)));
-
- if (mm_sms_get_text (sms))
- g_print (" | text: '%s'\n",
- VALIDATE (mm_sms_get_text (sms)));
-
- data = mm_sms_get_data (sms, &data_size);
- if (data) {
- gchar *data_hex;
-
- data_hex = mm_utils_bin2hexstr (data, data_size);
- g_print (" | data: '%s'\n",
- VALIDATE (data_hex));
- g_free (data_hex);
- }
-
- g_print (" -----------------------------------\n"
- " Properties | PDU type: '%s'\n"
- " | state: '%s'\n",
- mm_sms_pdu_type_get_string (pdu_type),
- mm_sms_state_get_string (mm_sms_get_state (sms)));
-
+ MMSmsPduType pdu_type;
+ gchar *data = NULL;
+ const guint8 *databin;
+ gsize databin_size;
+ gchar *validity = NULL;
+ gchar *class = NULL;
+ const gchar *delivery_report = NULL;
+ gchar *message_reference = NULL;
+ const gchar *delivery_state = NULL;
+
+ databin = mm_sms_get_data (sms, &databin_size);
+ if (databin)
+ data = mm_utils_bin2hexstr (databin, databin_size);
if (mm_sms_get_validity_type (sms) == MM_SMS_VALIDITY_TYPE_RELATIVE)
- g_print (" | validity (relative): '%u'\n",
- mm_sms_get_validity_relative (sms));
-
- g_print (" | storage: '%s'\n",
- mm_sms_storage_get_string (mm_sms_get_storage (sms)));
-
- /* Print properties which are set, regardless of the pdu type */
-
- if (mm_sms_get_smsc (sms))
- g_print (" | smsc: '%s'\n",
- mm_sms_get_smsc (sms));
-
+ validity = g_strdup_printf ("%u", mm_sms_get_validity_relative (sms));
if (mm_sms_get_class (sms) >= 0)
- g_print (" | class: '%d'\n",
- mm_sms_get_class (sms));
-
- if (mm_sms_get_teleservice_id (sms) != MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN)
- g_print (" | teleservice id: '%s'\n",
- mm_sms_cdma_teleservice_id_get_string (mm_sms_get_teleservice_id (sms)));
-
- if (mm_sms_get_service_category (sms) != MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN)
- g_print (" | service category: '%s'\n",
- mm_sms_cdma_service_category_get_string (mm_sms_get_service_category (sms)));
-
- /* Delivery report request just in 3GPP submit PDUs */
+ class = g_strdup_printf ("%d", mm_sms_get_class (sms));
+ pdu_type = mm_sms_get_pdu_type (sms);
if (pdu_type == MM_SMS_PDU_TYPE_SUBMIT)
- g_print (" | delivery report: '%s'\n",
- mm_sms_get_delivery_report_request (sms) ? "requested" : "not requested");
-
+ delivery_report = mm_sms_get_delivery_report_request (sms) ? "requested" : "not requested";
if (mm_sms_get_message_reference (sms) != 0)
- g_print (" | message reference: '%u'\n",
- mm_sms_get_message_reference (sms));
-
- if (mm_sms_get_timestamp (sms))
- g_print (" | timestamp: '%s'\n",
- mm_sms_get_timestamp (sms));
-
+ message_reference = g_strdup_printf ("%u", mm_sms_get_message_reference (sms));
if (mm_sms_get_delivery_state (sms) != MM_SMS_DELIVERY_STATE_UNKNOWN)
- g_print (" | delivery state: '%s' (0x%X)\n",
- VALIDATE (mm_sms_delivery_state_get_string_extended (mm_sms_get_delivery_state (sms))),
- mm_sms_get_delivery_state (sms));
-
- if (mm_sms_get_discharge_timestamp (sms))
- g_print (" | discharge timestamp: '%s'\n",
- mm_sms_get_discharge_timestamp (sms));
+ delivery_state = mm_sms_delivery_state_get_string_extended (mm_sms_get_delivery_state (sms));
+
+ mmcli_output_string (MMC_F_SMS_GENERAL_DBUS_PATH, mm_sms_get_path (sms));
+ mmcli_output_string (MMC_F_SMS_CONTENT_NUMBER, mm_sms_get_number (sms));
+ mmcli_output_string (MMC_F_SMS_CONTENT_TEXT, mm_sms_get_text (sms));
+ mmcli_output_string_take (MMC_F_SMS_CONTENT_DATA, data);
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_PDU_TYPE, mm_sms_pdu_type_get_string (pdu_type));
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_STATE, mm_sms_state_get_string (mm_sms_get_state (sms)));
+ mmcli_output_string_take (MMC_F_SMS_PROPERTIES_VALIDITY, validity);
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_STORAGE, mm_sms_storage_get_string (mm_sms_get_storage (sms)));
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_SMSC, mm_sms_get_smsc (sms));
+ mmcli_output_string_take (MMC_F_SMS_PROPERTIES_CLASS, class);
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_TELESERVICE_ID, mm_sms_cdma_teleservice_id_get_string (mm_sms_get_teleservice_id (sms)));
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_SERVICE_CATEGORY, mm_sms_cdma_service_category_get_string (mm_sms_get_service_category (sms)));
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_DELIVERY_REPORT, delivery_report);
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_MSG_REFERENCE, message_reference);
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_TIMESTAMP, mm_sms_get_timestamp (sms));
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_DELIVERY_STATE, delivery_state);
+ mmcli_output_string (MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP, mm_sms_get_discharge_timestamp (sms));
+ mmcli_output_dump ();
}
static void