diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-02-04 12:57:26 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-02-04 13:13:57 -0600 |
commit | 1cd4bf036f089446e079601b7157ea88172722a1 (patch) | |
tree | bed19a2278f5ab31f7d0e8e645b7eb0798cbeb1e | |
parent | c9b80a73c14e5ca6ba8d3fea497aa8ac31d427a7 (diff) | |
download | ofono-1cd4bf036f089446e079601b7157ea88172722a1.tar.bz2 |
Add function to handle SLC handshake failures
-rw-r--r-- | plugins/hfp.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/plugins/hfp.c b/plugins/hfp.c index 0e2e3592..24cc127a 100644 --- a/plugins/hfp.c +++ b/plugins/hfp.c @@ -52,6 +52,7 @@ #define BLUEZ_GATEWAY_INTERFACE BLUEZ_SERVICE ".HandsfreeGateway" #define HFP_AGENT_INTERFACE "org.bluez.HandsfreeAgent" +#define HFP_AGENT_ERROR_INTERFACE "org.bluez.Error" #define HFP_AG_UUID "0000111F-0000-1000-8000-00805F9B34FB" @@ -67,7 +68,6 @@ static const char *chld_prefix[] = { "+CHLD:", NULL }; static DBusConnection *connection; static int hfp_disable(struct ofono_modem *modem); -static void hfp_remove(struct ofono_modem *modem); static void hfp_debug(const char *str, void *user_data) { @@ -84,12 +84,30 @@ static void sevice_level_conn_established(struct ofono_modem *modem) msg = dbus_message_new_method_return(data->slc_msg); g_dbus_send_message(connection, msg); dbus_message_unref(data->slc_msg); + data->slc_msg = NULL; ofono_info("Service level connection established"); g_at_chat_send(data->chat, "AT+CMEE=1", NULL, NULL, NULL, NULL); } +static void service_level_conn_failed(struct ofono_modem *modem) +{ + struct hfp_data *data = ofono_modem_get_data(modem); + DBusMessage *msg; + + ofono_modem_set_powered(modem, FALSE); + + msg = g_dbus_create_error(data->slc_msg, HFP_AGENT_ERROR_INTERFACE + ".Failed", + "HFP Handshake failed"); + g_dbus_send_message(connection, msg); + dbus_message_unref(data->slc_msg); + data->slc_msg = NULL; + + ofono_error("Service level connection failed"); +} + static void chld_cb(gboolean ok, GAtResult *result, gpointer user_data) { struct ofono_modem *modem = user_data; |