sms: Separate history from dbus flags in txq_submit

This commit is contained in:
Denis Kenzior 2010-11-04 10:21:34 -05:00
parent 3436c58fac
commit 857e2d046f
2 changed files with 19 additions and 11 deletions

View File

@ -232,6 +232,7 @@ enum ofono_sms_submit_flag {
OFONO_SMS_SUBMIT_FLAG_REQUEST_SR = 0x1,
OFONO_SMS_SUBMIT_FLAG_RECORD_HISTORY = 0x2,
OFONO_SMS_SUBMIT_FLAG_RETRY = 0x4,
OFONO_SMS_SUBMIT_FLAG_EXPOSE_DBUS = 0x8,
};
typedef void (*ofono_sms_txq_submit_cb_t)(gboolean ok, void *data);

View File

@ -788,18 +788,24 @@ next_q:
if (entry->flags & OFONO_SMS_SUBMIT_FLAG_RECORD_HISTORY) {
enum ofono_history_sms_status hs;
enum message_state ms;
if (ok) {
if (ok)
hs = OFONO_HISTORY_SMS_STATUS_SUBMITTED;
ms = MESSAGE_STATE_SENT;
} else {
else
hs = OFONO_HISTORY_SMS_STATUS_SUBMIT_FAILED;
ms = MESSAGE_STATE_FAILED;
}
__ofono_history_sms_send_status(modem, &entry->uuid,
time(NULL), hs);
}
if (entry->flags & OFONO_SMS_SUBMIT_FLAG_EXPOSE_DBUS) {
enum message_state ms;
if (ok)
ms = MESSAGE_STATE_SENT;
else
ms = MESSAGE_STATE_FAILED;
message_set_state(sms, &entry->uuid, ms);
}
@ -989,6 +995,7 @@ static DBusMessage *sms_send_message(DBusConnection *conn, DBusMessage *msg,
flags = OFONO_SMS_SUBMIT_FLAG_RECORD_HISTORY;
flags |= OFONO_SMS_SUBMIT_FLAG_RETRY;
flags |= OFONO_SMS_SUBMIT_FLAG_EXPOSE_DBUS;
if (sms->use_delivery_reports)
flags |= OFONO_SMS_SUBMIT_FLAG_REQUEST_SR;
@ -1863,15 +1870,14 @@ int __ofono_sms_txq_submit(struct ofono_sms *sms, GSList *list,
struct ofono_uuid *uuid,
ofono_sms_txq_queued_cb_t cb, void *data)
{
struct message *m = NULL;
struct tx_queue_entry *entry;
entry = tx_queue_entry_new(list, flags);
if (entry == NULL)
return -ENOMEM;
if (flags & OFONO_SMS_SUBMIT_FLAG_RECORD_HISTORY) {
struct message *m;
if (flags & OFONO_SMS_SUBMIT_FLAG_EXPOSE_DBUS) {
m = message_create(&entry->uuid);
if (m == NULL)
goto err;
@ -1880,8 +1886,6 @@ int __ofono_sms_txq_submit(struct ofono_sms *sms, GSList *list,
goto err;
g_hash_table_insert(sms->messages, &m->uuid, m);
emit_message_added(sms, m);
m->entry = entry;
}
@ -1900,6 +1904,9 @@ int __ofono_sms_txq_submit(struct ofono_sms *sms, GSList *list,
if (uuid)
memcpy(uuid, &entry->uuid, sizeof(*uuid));
if (m && (flags & OFONO_SMS_SUBMIT_FLAG_EXPOSE_DBUS))
emit_message_added(sms, m);
return 0;
err: