stktest: Add STK Agent API skeleton

This commit is contained in:
Denis Kenzior 2012-09-27 12:36:02 -05:00
parent 325879477c
commit 77db3a4d41
1 changed files with 53 additions and 1 deletions

View File

@ -38,9 +38,11 @@
#define OFONO_SERVICE "org.ofono"
#define STKTEST_PATH "/stktest"
#define STKTEST_ERROR "org.ofono.stktest"
#define OFONO_MANAGER_INTERFACE OFONO_SERVICE ".Manager"
#define OFONO_MODEM_INTERFACE OFONO_SERVICE ".Modem"
#define OFONO_STK_INTERFACE OFONO_SERVICE ".SimToolkit"
#define OFONO_STKAGENT_INTERFACE OFONO_SERVICE ".SimToolkitAgent"
#define LISTEN_PORT 12765
@ -69,6 +71,38 @@ static int modem_mode = 0;
static gboolean create_tcp(void);
static DBusMessage *stktest_error_invalid_args(DBusMessage *msg)
{
return g_dbus_create_error(msg, STKTEST_ERROR ".InvalidArguments",
"Invalid arguments provided");
}
static DBusMessage *agent_release(DBusConnection *conn, DBusMessage *msg,
void *data)
{
g_print("Got Release");
return dbus_message_new_method_return(msg);
}
static DBusMessage *agent_display_text(DBusConnection *conn, DBusMessage *msg,
void *data)
{
const char *text;
unsigned char icon_id;
dbus_bool_t urgent;
if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &text,
DBUS_TYPE_BYTE, &icon_id,
DBUS_TYPE_BOOLEAN, &urgent,
DBUS_TYPE_INVALID) == FALSE)
return stktest_error_invalid_args(msg);
g_print("Got DisplayText with: %s, %u, %d\n", text, icon_id, urgent);
return dbus_message_new_method_return(msg);
}
static void server_debug(const char *str, void *data)
{
g_print("%s: %s\n", (char *) data, str);
@ -538,12 +572,28 @@ static int get_modems(DBusConnection *conn)
return 0;
}
static const GDBusMethodTable agent_methods[] = {
{ GDBUS_METHOD("Release", NULL, NULL, agent_release) },
{ GDBUS_METHOD("DisplayText",
GDBUS_ARGS({ "text", "s" }, { "icon_id", "y" },
{ "urgent", "b" }), NULL,
agent_display_text) },
{ },
};
static void ofono_connect(DBusConnection *conn, void *user_data)
{
g_print("starting telephony interface\n");
ofono_running = TRUE;
if (!g_dbus_register_interface(conn, "/default",
OFONO_STKAGENT_INTERFACE,
agent_methods, NULL, NULL,
NULL, NULL)) {
g_printerr("Unable to register local agent");
g_main_loop_quit(main_loop);
}
ofono_running = TRUE;
get_modems(conn);
}
@ -551,6 +601,8 @@ static void ofono_disconnect(DBusConnection *conn, void *user_data)
{
g_print("stopping telephony interface\n");
g_dbus_unregister_interface(conn, "/default", OFONO_STKAGENT_INTERFACE);
ofono_running = FALSE;
g_dbus_remove_watch(conn, modem_changed_watch);