diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-07-29 14:38:45 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-07-30 17:19:55 -0500 |
commit | 1a7179b79d22c95911554c77baa4a9e21ff19a44 (patch) | |
tree | df0b4ea6b2df259cfd50940357fed5798b010975 /src/stkagent.c | |
parent | 7ad5b35a359eeb55cb68f20fb1a059d2638efbe8 (diff) | |
download | ofono-1a7179b79d22c95911554c77baa4a9e21ff19a44.tar.bz2 |
stkagent: Simplify stkagent logic
Diffstat (limited to 'src/stkagent.c')
-rw-r--r-- | src/stkagent.c | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/stkagent.c b/src/stkagent.c index 200221d0..66f6ab35 100644 --- a/src/stkagent.c +++ b/src/stkagent.c @@ -60,14 +60,14 @@ struct stk_agent { #define OFONO_NAVIGATION_GOBACK OFONO_NAVIGATION_PREFIX ".GoBack" #define OFONO_NAVIGATION_TERMINATED OFONO_NAVIGATION_PREFIX ".EndSession" -static void stk_agent_request_send_cancel(struct stk_agent *agent) +static void stk_agent_send_noreply(struct stk_agent *agent, const char *method) { DBusConnection *conn = ofono_dbus_get_connection(); DBusMessage *message; message = dbus_message_new_method_call(agent->bus, agent->path, OFONO_SIM_APP_INTERFACE, - "Cancel"); + method); if (message == NULL) return; @@ -76,6 +76,16 @@ static void stk_agent_request_send_cancel(struct stk_agent *agent) g_dbus_send_message(conn, message); } +static inline void stk_agent_send_release(struct stk_agent *agent) +{ + stk_agent_send_noreply(agent, "Release"); +} + +static inline void stk_agent_send_cancel(struct stk_agent *agent) +{ + stk_agent_send_noreply(agent, "Cancel"); +} + static void stk_agent_request_end(struct stk_agent *agent) { agent->cmd_cb = NULL; @@ -125,7 +135,7 @@ void stk_agent_request_cancel(struct stk_agent *agent) stk_agent_request_end(agent); - stk_agent_request_send_cancel(agent); + stk_agent_send_cancel(agent); } static void stk_agent_request_terminate(struct stk_agent *agent) @@ -138,30 +148,19 @@ static void stk_agent_request_terminate(struct stk_agent *agent) void stk_agent_free(struct stk_agent *agent) { DBusConnection *conn = ofono_dbus_get_connection(); + gboolean busy = stk_agent_busy(agent); - if (agent->disconnect_watch) { - DBusMessage *message; - - if (stk_agent_busy(agent)) { - stk_agent_request_terminate(agent); - - stk_agent_request_send_cancel(agent); - } + if (busy) + stk_agent_request_terminate(agent); - message = dbus_message_new_method_call(agent->bus, agent->path, - OFONO_SIM_APP_INTERFACE, - "Release"); - if (message) { - dbus_message_set_no_reply(message, TRUE); + if (agent->disconnect_watch) { + if (busy) + stk_agent_send_cancel(agent); - g_dbus_send_message(conn, message); - } + stk_agent_send_release(agent); g_dbus_remove_watch(conn, agent->disconnect_watch); agent->disconnect_watch = 0; - } else { - if (stk_agent_busy(agent)) - stk_agent_request_terminate(agent); } if (agent->removed_cb) @@ -278,7 +277,7 @@ static void stk_agent_disconnect_cb(DBusConnection *conn, void *user_data) agent->disconnect_watch = 0; - stk_agent_free(user_data); + stk_agent_free(agent); } struct stk_agent *stk_agent_new(const char *path, const char *sender, |