diff options
author | Denis Kenzior <denis.kenzior@intel.com> | 2009-05-12 17:30:38 -0500 |
---|---|---|
committer | Marcel Holtmann <marcel.holtmann@intel.com> | 2009-05-12 19:09:57 -0700 |
commit | 8d628ef7f4211e1bfb647d9129ed6ebbe1a61d0e (patch) | |
tree | a0791bfd20a71e42b56e0d1dd85a6adbaba36bd8 | |
parent | 95e9c0dcf2e72dbce58717c31a95c466ee07b943 (diff) | |
download | ofono-8d628ef7f4211e1bfb647d9129ed6ebbe1a61d0e.tar.bz2 |
Implement callback for the cancel function
-rw-r--r-- | src/ussd.c | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -335,9 +335,28 @@ static DBusMessage *ussd_initiate(DBusConnection *conn, DBusMessage *msg, return NULL; } -static void ussd_cancel_callback(const struct ofono_error *err, void *data) +static void ussd_cancel_callback(const struct ofono_error *error, void *data) { - //struct ussd_data *ussd = data; + struct ussd_data *ussd = data; + DBusMessage *reply; + + if (error->type != OFONO_ERROR_TYPE_NO_ERROR) + ofono_debug("ussd cancel failed with error: %s", + telephony_error_to_str(error)); + + ussd->flags &= ~USSD_FLAG_PENDING; + + if (!ussd->pending) + return; + + if (error->type == OFONO_ERROR_TYPE_NO_ERROR) { + ussd->state = USSD_STATE_IDLE; + + reply = dbus_message_new_method_return(ussd->pending); + } else + reply = dbus_gsm_failed(ussd->pending); + + dbus_gsm_pending_reply(&ussd->pending, reply); } static DBusMessage *ussd_cancel(DBusConnection *conn, DBusMessage *msg, |