mirror of git://git.sysmocom.de/ofono
stkagent: Refactor stkagent api
This commit is contained in:
parent
dc5a2609b3
commit
7ad5b35a35
|
@ -466,7 +466,7 @@ static DBusMessage *stk_register_agent(DBusConnection *conn,
|
||||||
if (!stk->default_agent)
|
if (!stk->default_agent)
|
||||||
return __ofono_error_failed(msg);
|
return __ofono_error_failed(msg);
|
||||||
|
|
||||||
stk_agent_set_destroy_watch(stk->default_agent,
|
stk_agent_set_removed_notify(stk->default_agent,
|
||||||
default_agent_notify, stk);
|
default_agent_notify, stk);
|
||||||
|
|
||||||
if (!stk->session_agent)
|
if (!stk->session_agent)
|
||||||
|
@ -533,7 +533,7 @@ static void menu_selection_envelope_cb(struct ofono_stk *stk, gboolean ok,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
stk_agent_set_destroy_watch(stk->session_agent,
|
stk_agent_set_removed_notify(stk->session_agent,
|
||||||
session_agent_notify, stk);
|
session_agent_notify, stk);
|
||||||
|
|
||||||
stk->current_agent = stk->session_agent;
|
stk->current_agent = stk->session_agent;
|
||||||
|
|
|
@ -39,19 +39,19 @@ typedef void (*stk_agent_request_return)(struct stk_agent *agent,
|
||||||
DBusMessage *reply);
|
DBusMessage *reply);
|
||||||
|
|
||||||
struct stk_agent {
|
struct stk_agent {
|
||||||
char *path;
|
char *path; /* Agent Path */
|
||||||
char *bus;
|
char *bus; /* Agent bus */
|
||||||
|
ofono_bool_t is_default; /* False if user-session */
|
||||||
|
guint disconnect_watch; /* DBus disconnect watch */
|
||||||
|
ofono_destroy_func removed_cb;
|
||||||
|
void *removed_data;
|
||||||
DBusMessage *msg;
|
DBusMessage *msg;
|
||||||
DBusPendingCall *call;
|
DBusPendingCall *call;
|
||||||
guint disconnect_watch;
|
|
||||||
guint cmd_send_source;
|
guint cmd_send_source;
|
||||||
stk_agent_request_return cmd_cb;
|
stk_agent_request_return cmd_cb;
|
||||||
int cmd_timeout;
|
int cmd_timeout;
|
||||||
stk_agent_generic_cb user_cb;
|
stk_agent_generic_cb user_cb;
|
||||||
void *user_data;
|
void *user_data;
|
||||||
ofono_bool_t is_default;
|
|
||||||
GDestroyNotify destroy_notify;
|
|
||||||
void *destroy_data;
|
|
||||||
|
|
||||||
const struct stk_menu *request_selection_menu;
|
const struct stk_menu *request_selection_menu;
|
||||||
};
|
};
|
||||||
|
@ -108,11 +108,12 @@ ofono_bool_t stk_agent_matches(struct stk_agent *agent,
|
||||||
return !strcmp(agent->path, path) && !strcmp(agent->bus, sender);
|
return !strcmp(agent->path, path) && !strcmp(agent->bus, sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stk_agent_set_destroy_watch(struct stk_agent *agent, GDestroyNotify notify,
|
void stk_agent_set_removed_notify(struct stk_agent *agent,
|
||||||
|
ofono_destroy_func destroy,
|
||||||
void *user_data)
|
void *user_data)
|
||||||
{
|
{
|
||||||
agent->destroy_notify = notify;
|
agent->removed_cb = destroy;
|
||||||
agent->destroy_data = user_data;
|
agent->removed_data = user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void stk_agent_request_cancel(struct stk_agent *agent)
|
void stk_agent_request_cancel(struct stk_agent *agent)
|
||||||
|
@ -163,8 +164,8 @@ void stk_agent_free(struct stk_agent *agent)
|
||||||
stk_agent_request_terminate(agent);
|
stk_agent_request_terminate(agent);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (agent->destroy_notify)
|
if (agent->removed_cb)
|
||||||
agent->destroy_notify(agent->destroy_data);
|
agent->removed_cb(agent->removed_data);
|
||||||
|
|
||||||
g_free(agent->path);
|
g_free(agent->path);
|
||||||
g_free(agent->bus);
|
g_free(agent->bus);
|
||||||
|
|
|
@ -56,11 +56,13 @@ struct stk_agent *stk_agent_new(const char *path, const char *sender,
|
||||||
|
|
||||||
void stk_agent_free(struct stk_agent *agent);
|
void stk_agent_free(struct stk_agent *agent);
|
||||||
|
|
||||||
|
void stk_agent_set_removed_notify(struct stk_agent *agent,
|
||||||
|
ofono_destroy_func removed_cb,
|
||||||
|
void *user_data);
|
||||||
|
|
||||||
ofono_bool_t stk_agent_busy(struct stk_agent *agent);
|
ofono_bool_t stk_agent_busy(struct stk_agent *agent);
|
||||||
ofono_bool_t stk_agent_matches(struct stk_agent *agent,
|
ofono_bool_t stk_agent_matches(struct stk_agent *agent,
|
||||||
const char *path, const char *sender);
|
const char *path, const char *sender);
|
||||||
void stk_agent_set_destroy_watch(struct stk_agent *agent, GDestroyNotify notify,
|
|
||||||
void *user_data);
|
|
||||||
|
|
||||||
void stk_agent_request_cancel(struct stk_agent *agent);
|
void stk_agent_request_cancel(struct stk_agent *agent);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue