diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-10 20:13:00 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-14 07:05:24 +0200 |
commit | 1c119be83492dac56f8d2ea5bd6b8717ccda1ae6 (patch) | |
tree | 4d7b1cefbb8c79b3d4a14c94ce6eac0cb5ed7063 /src | |
parent | b42b5795e33e052e7dacc4731af89fde44f56ff5 (diff) |
api: new `Sms.DeliveryReportRequest' property
Also allowing the 'delivery-report-request' key in the `Messaging.CreateSms()'
method.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-sms-part.c | 17 | ||||
-rw-r--r-- | src/mm-sms-part.h | 4 | ||||
-rw-r--r-- | src/mm-sms.c | 4 |
3 files changed, 23 insertions, 2 deletions
diff --git a/src/mm-sms-part.c b/src/mm-sms-part.c index 62debf59..f0b36ce4 100644 --- a/src/mm-sms-part.c +++ b/src/mm-sms-part.c @@ -269,6 +269,7 @@ struct _MMSmsPart { guint data_coding_scheme; guint class; guint validity; + gboolean delivery_report_request; gboolean should_concat; guint concat_reference; @@ -342,6 +343,8 @@ PART_GET_FUNC (guint, class) PART_SET_FUNC (guint, class) PART_GET_FUNC (guint, validity) PART_SET_FUNC (guint, validity) +PART_GET_FUNC (gboolean, delivery_report_request) +PART_SET_FUNC (gboolean, delivery_report_request) PART_GET_FUNC (guint, concat_reference) @@ -759,8 +762,18 @@ mm_sms_part_get_submit_pdu (MMSmsPart *part, pdu[offset] |= 0x40; /* UDHI */ } - /* TODO: Request status only in last part */ - pdu[offset++] |= 0x01; /* TP-MTI = SMS-SUBMIT */ + /* Delivery report requested in singlepart messages or in the last PDU of + * multipart messages */ + if (part->delivery_report_request && + (!part->concat_sequence || + part->concat_max == part->concat_sequence)) { + mm_dbg (" requesting delivery report..."); + pdu[offset] |= 0x20; + } + + /* TP-MTI = SMS-SUBMIT */ + pdu[offset++] |= 0x01; + /* ----------- TP-MR (1 byte) ----------- */ diff --git a/src/mm-sms-part.h b/src/mm-sms-part.h index 27b73914..7fbbc411 100644 --- a/src/mm-sms-part.h +++ b/src/mm-sms-part.h @@ -96,6 +96,10 @@ guint mm_sms_part_get_validity (MMSmsPart *part); void mm_sms_part_set_validity (MMSmsPart *part, guint validity); +gboolean mm_sms_part_get_delivery_report_request (MMSmsPart *part); +void mm_sms_part_set_delivery_report_request (MMSmsPart *part, + gboolean delivery_report_request); + guint mm_sms_part_get_concat_reference (MMSmsPart *part); void mm_sms_part_set_concat_reference (MMSmsPart *part, guint concat_reference); diff --git a/src/mm-sms.c b/src/mm-sms.c index ae7df500..c18f167c 100644 --- a/src/mm-sms.c +++ b/src/mm-sms.c @@ -1183,6 +1183,8 @@ assemble_sms (MMSms *self, "number", mm_sms_part_get_number (sorted_parts[0]), "timestamp", mm_sms_part_get_timestamp (sorted_parts[0]), "validity", mm_sms_part_get_validity (sorted_parts[0]), + /* delivery report request usually set in the last part only */ + "delivery-report-request", mm_sms_part_get_delivery_report_request (sorted_parts[self->priv->max_parts - 1]), NULL); g_string_free (fulltext, TRUE); @@ -1397,6 +1399,7 @@ mm_sms_new_from_properties (MMBaseModem *modem, mm_sms_part_set_smsc (part, mm_sms_properties_get_smsc (properties)); mm_sms_part_set_validity (part, mm_sms_properties_get_validity (properties)); mm_sms_part_set_class (part, mm_sms_properties_get_class (properties)); + mm_sms_part_set_delivery_report_request (part, mm_sms_properties_get_delivery_report_request (properties)); mm_sms_part_set_concat_reference (part, reference); mm_sms_part_set_concat_sequence (part, i + 1); mm_sms_part_set_concat_max (part, n_parts); @@ -1437,6 +1440,7 @@ mm_sms_new_from_properties (MMBaseModem *modem, mm_sms_part_set_smsc (part, mm_sms_properties_get_smsc (properties)); mm_sms_part_set_validity (part, mm_sms_properties_get_validity (properties)); mm_sms_part_set_class (part, mm_sms_properties_get_class (properties)); + mm_sms_part_set_delivery_report_request (part, mm_sms_properties_get_delivery_report_request (properties)); return mm_sms_singlepart_new (modem, MM_SMS_STATE_UNKNOWN, |