diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2010-07-28 12:26:11 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-07-30 17:19:55 -0500 |
commit | b051f28dbe645cce7e4dc09449be91da54a12356 (patch) | |
tree | 5bdb96ff9840450937170f45ba213a1518b8ad22 /src/stkagent.c | |
parent | 3714eb8acd8a38988e005b795f384b640980ff98 (diff) | |
download | ofono-b051f28dbe645cce7e4dc09449be91da54a12356.tar.gz |
stk: Handle the Display Text proactive command.
Diffstat (limited to 'src/stkagent.c')
-rw-r--r-- | src/stkagent.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/stkagent.c b/src/stkagent.c index ce7ad185..7072e904 100644 --- a/src/stkagent.c +++ b/src/stkagent.c @@ -396,3 +396,39 @@ void stk_agent_request_selection(struct stk_agent *agent, agent->request_selection_menu = menu; } + +static void display_text_cb(struct stk_agent *agent, + enum stk_agent_result result, + DBusMessage *reply) +{ + stk_agent_generic_cb cb = agent->user_cb; + + if (result == STK_AGENT_RESULT_OK && dbus_message_get_args( + reply, NULL, DBUS_TYPE_INVALID) == FALSE) { + ofono_error("Can't parse the reply to DisplayText()"); + + result = STK_AGENT_RESULT_TERMINATE; + } + + cb(result, agent->user_data); +} + +void stk_agent_display_text(struct stk_agent *agent, const char *text, + uint8_t icon_id, ofono_bool_t urgent, + ofono_bool_t ack, stk_agent_generic_cb cb, + void *user_data, int timeout) +{ + dbus_bool_t priority = urgent; + dbus_bool_t confirm = ack; + + if (!stk_agent_request_start(agent, "DisplayText", display_text_cb, + cb, user_data, timeout)) + return; + + dbus_message_append_args(agent->msg, + DBUS_TYPE_STRING, &text, + DBUS_TYPE_BYTE, &icon_id, + DBUS_TYPE_BOOLEAN, &priority, + DBUS_TYPE_BOOLEAN, &confirm, + DBUS_TYPE_INVALID); +} |