diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-10-25 10:55:03 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-10-25 19:49:56 +0200 |
commit | 364df3106ad068175b423d6dbbd478f49b5cb788 (patch) | |
tree | 5a4aee6a8d0905000e213bff22aae74d13bca659 | |
parent | 80f55923ed9a7e3dcdaa35d8c31b6ae94d27d8b4 (diff) | |
download | ModemManager-364df3106ad068175b423d6dbbd478f49b5cb788.tar.gz |
sms-part-cdma: improve logging when creating PDUs
-rw-r--r-- | src/mm-sms-part-cdma.c | 86 |
1 files changed, 48 insertions, 38 deletions
diff --git a/src/mm-sms-part-cdma.c b/src/mm-sms-part-cdma.c index cae53b6f1..8040a1d30 100644 --- a/src/mm-sms-part-cdma.c +++ b/src/mm-sms-part-cdma.c @@ -205,6 +205,29 @@ typedef enum { ENCODING_GSM_DCS = 10, } Encoding; +static const gchar * +encoding_to_string (Encoding encoding) +{ + static const gchar *encoding_str[] = { + "octet", + "extend protocol message", + "7-bit ASCII", + "IA5", + "unicode", + "shift-j is", + "korean", + "latin/hebrew", + "latin", + "7-bit GSM", + "GSM data coding scheme" + }; + + if (encoding >= ENCODING_OCTET && encoding <= ENCODING_GSM_DCS) + return encoding_str[encoding]; + + return "unknown"; +} + /*****************************************************************************/ /* Read bits; o_bits < 8; n_bits <= 8 * @@ -772,44 +795,7 @@ read_bearer_data_user_data (MMSmsPart *sms_part, SUBPARAMETER_SIZE_CHECK (1); message_encoding = read_bits (&subparameter->parameter_value[byte_offset], bit_offset, 5); OFFSETS_UPDATE (5); - switch (message_encoding) { - case ENCODING_OCTET: - mm_dbg (" message encoding: octet, unspecified"); - break; - case ENCODING_EXTENDED_PROTOCOL_MESSAGE: - mm_dbg (" message encoding: extended protocol message"); - break; - case ENCODING_ASCII_7BIT: - mm_dbg (" message encoding: 7-bit ASCII"); - break; - case ENCODING_IA5: - mm_dbg (" message encoding: IA5"); - break; - case ENCODING_UNICODE: - mm_dbg (" message encoding: unicode"); - break; - case ENCODING_SHIFT_JIS: - mm_dbg (" message encoding: shift-j is"); - break; - case ENCODING_KOREAN: - mm_dbg (" message encoding: korean"); - break; - case ENCODING_LATIN_HEBREW: - mm_dbg (" message encoding: latin/hebrew"); - break; - case ENCODING_LATIN: - mm_dbg (" message encoding: latin"); - break; - case ENCODING_GSM_7BIT: - mm_dbg (" message encoding: 7-bit GSM"); - break; - case ENCODING_GSM_DCS: - mm_dbg (" message encoding: GSM data coding scheme"); - break; - default: - mm_dbg (" message encoding unknown (%u)", message_encoding); - break; - } + mm_dbg (" message encoding: %s", encoding_to_string (message_encoding)); /* Message type, only if extended protocol message */ if (message_encoding == ENCODING_EXTENDED_PROTOCOL_MESSAGE) { @@ -1230,6 +1216,8 @@ write_teleservice_id (MMSmsPart *part, { guint16 aux16; + mm_dbg (" writing teleservice ID..."); + if (mm_sms_part_get_cdma_teleservice_id (part) != MM_SMS_CDMA_TELESERVICE_ID_WMT) { g_set_error (error, MM_CORE_ERROR, @@ -1240,6 +1228,10 @@ write_teleservice_id (MMSmsPart *part, return FALSE; } + mm_dbg (" teleservice ID: %s (%u)", + mm_sms_cdma_teleservice_id_get_string (MM_SMS_CDMA_TELESERVICE_ID_WMT), + MM_SMS_CDMA_TELESERVICE_ID_WMT); + /* Teleservice ID: WMT always */ pdu[0] = PARAMETER_ID_TELESERVICE_ID; pdu[1] = 2; /* parameter_len, always 2 */ @@ -1262,6 +1254,8 @@ write_destination_address (MMSmsPart *part, guint n_digits; guint i; + mm_dbg (" writing destination address..."); + #define OFFSETS_UPDATE(n_bits) do { \ bit_offset += n_bits; \ if (bit_offset >= 8) { \ @@ -1280,10 +1274,12 @@ write_destination_address (MMSmsPart *part, bit_offset = 0; /* Digit mode: DTMF always */ + mm_dbg (" digit mode: dtmf"); write_bits (&pdu[byte_offset], bit_offset, 1, DIGIT_MODE_DTMF); OFFSETS_UPDATE (1); /* Number mode: DIGIT always */ + mm_dbg (" number mode: digit"); write_bits (&pdu[byte_offset], bit_offset, 1, NUMBER_MODE_DIGIT); OFFSETS_UPDATE (1); @@ -1298,10 +1294,12 @@ write_destination_address (MMSmsPart *part, n_digits); return FALSE; } + mm_dbg (" num fields: %u", n_digits); write_bits (&pdu[byte_offset], bit_offset, 8, n_digits); OFFSETS_UPDATE (8); /* Actual DTMF encoded number */ + mm_dbg (" address: %s", number); for (i = 0; i < n_digits; i++) { guint8 dtmf; @@ -1345,6 +1343,8 @@ write_bearer_data_message_identifier (MMSmsPart *part, pdu[0] = SUBPARAMETER_ID_MESSAGE_ID; pdu[1] = 3; /* subparameter_len, always 3 */ + mm_dbg (" writing message identifier: submit"); + /* Message type */ write_bits (&pdu[2], 0, 4, TELESERVICE_MESSAGE_TYPE_SUBMIT); @@ -1433,6 +1433,8 @@ write_bearer_data_user_data (MMSmsPart *part, const GByteArray *aux; guint num_bits_per_iter; + mm_dbg (" writing user data..."); + #define OFFSETS_UPDATE(n_bits) do { \ bit_offset += n_bits; \ if (bit_offset >= 8) { \ @@ -1467,6 +1469,7 @@ write_bearer_data_user_data (MMSmsPart *part, } /* Message encoding*/ + mm_dbg (" message encoding: %s", encoding_to_string (encoding)); write_bits (&pdu[byte_offset], bit_offset, 5, encoding); OFFSETS_UPDATE (5); @@ -1481,11 +1484,16 @@ write_bearer_data_user_data (MMSmsPart *part, num_fields); return FALSE; } + mm_dbg (" num fields: %u", num_fields); write_bits (&pdu[byte_offset], bit_offset, 8, num_fields); OFFSETS_UPDATE (8); /* For ASCII-7, write 7 bits in each iteration; for the remaining ones * go byte per byte */ + if (text) + mm_dbg (" text: '%s'", text); + else + mm_dbg (" data: (%u bytes)", num_fields); num_bits_per_iter = num_bits_per_field < 8 ? num_bits_per_field : 8; for (i = 0; i < aux->len; i++) { write_bits (&pdu[byte_offset], bit_offset, num_bits_per_iter, aux->data[i]); @@ -1522,6 +1530,8 @@ write_bearer_data (MMSmsPart *part, GError *inner_error = NULL; guint offset = 0; + mm_dbg (" writing bearer data..."); + pdu[0] = PARAMETER_ID_BEARER_DATA; /* Write parameter length at the end */ |