From 9b8646a4462aca907abdcf237afbe57555467aa7 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 19 Dec 2012 19:17:56 +0200 Subject: [PATCH] core: Make device_cancel_bonding static to device.c --- src/device.c | 157 +++++++++++++++++++++++++-------------------------- src/device.h | 1 - 2 files changed, 78 insertions(+), 80 deletions(-) diff --git a/src/device.c b/src/device.c index a56eba2dc..c5222ee89 100644 --- a/src/device.c +++ b/src/device.c @@ -1483,6 +1483,84 @@ static DBusMessage *pair_device(DBusConnection *conn, DBusMessage *msg, return NULL; } +static DBusMessage *new_authentication_return(DBusMessage *msg, uint8_t status) +{ + switch (status) { + case MGMT_STATUS_SUCCESS: + return dbus_message_new_method_return(msg); + + case MGMT_STATUS_CONNECT_FAILED: + return dbus_message_new_error(msg, + ERROR_INTERFACE ".ConnectionAttemptFailed", + "Page Timeout"); + case MGMT_STATUS_TIMEOUT: + return dbus_message_new_error(msg, + ERROR_INTERFACE ".AuthenticationTimeout", + "Authentication Timeout"); + case MGMT_STATUS_BUSY: + case MGMT_STATUS_REJECTED: + return dbus_message_new_error(msg, + ERROR_INTERFACE ".AuthenticationRejected", + "Authentication Rejected"); + case MGMT_STATUS_CANCELLED: + case MGMT_STATUS_NO_RESOURCES: + case MGMT_STATUS_DISCONNECTED: + return dbus_message_new_error(msg, + ERROR_INTERFACE ".AuthenticationCanceled", + "Authentication Canceled"); + default: + return dbus_message_new_error(msg, + ERROR_INTERFACE ".AuthenticationFailed", + "Authentication Failed"); + } +} + +static void bonding_request_free(struct bonding_req *bonding) +{ + if (!bonding) + return; + + if (bonding->listener_id) + g_dbus_remove_watch(btd_get_dbus_connection(), + bonding->listener_id); + + if (bonding->msg) + dbus_message_unref(bonding->msg); + + if (bonding->agent) { + agent_cancel(bonding->agent); + agent_unref(bonding->agent); + bonding->agent = NULL; + } + + if (bonding->device) + bonding->device->bonding = NULL; + + g_free(bonding); +} + +static void device_cancel_bonding(struct btd_device *device, uint8_t status) +{ + struct bonding_req *bonding = device->bonding; + DBusMessage *reply; + char addr[18]; + + if (!bonding) + return; + + ba2str(&device->bdaddr, addr); + DBG("Canceling bonding request for %s", addr); + + if (device->authr) + device_cancel_authentication(device, FALSE); + + reply = new_authentication_return(bonding->msg, status); + g_dbus_send_message(btd_get_dbus_connection(), reply); + + bonding_request_cancel(bonding); + bonding_request_free(bonding); +} + static DBusMessage *cancel_pairing(DBusConnection *conn, DBusMessage *msg, void *data) { @@ -3066,31 +3144,6 @@ static void primary_cb(GSList *services, guint8 status, gpointer user_data) find_included_services(req, services); } -static void bonding_request_free(struct bonding_req *bonding) -{ - if (!bonding) - return; - - if (bonding->listener_id) - g_dbus_remove_watch(btd_get_dbus_connection(), - bonding->listener_id); - - if (bonding->msg) - dbus_message_unref(bonding->msg); - - if (bonding->agent) { - agent_cancel(bonding->agent); - agent_unref(bonding->agent); - bonding->agent = NULL; - } - - if (bonding->device) - bonding->device->bonding = NULL; - - g_free(bonding); - -} - static void att_connect_cb(GIOChannel *io, GError *gerr, gpointer user_data) { struct att_callbacks *attcb = user_data; @@ -3514,38 +3567,6 @@ static gboolean start_discovery(gpointer user_data) return FALSE; } -static DBusMessage *new_authentication_return(DBusMessage *msg, uint8_t status) -{ - switch (status) { - case MGMT_STATUS_SUCCESS: - return dbus_message_new_method_return(msg); - - case MGMT_STATUS_CONNECT_FAILED: - return dbus_message_new_error(msg, - ERROR_INTERFACE ".ConnectionAttemptFailed", - "Page Timeout"); - case MGMT_STATUS_TIMEOUT: - return dbus_message_new_error(msg, - ERROR_INTERFACE ".AuthenticationTimeout", - "Authentication Timeout"); - case MGMT_STATUS_BUSY: - case MGMT_STATUS_REJECTED: - return dbus_message_new_error(msg, - ERROR_INTERFACE ".AuthenticationRejected", - "Authentication Rejected"); - case MGMT_STATUS_CANCELLED: - case MGMT_STATUS_NO_RESOURCES: - case MGMT_STATUS_DISCONNECTED: - return dbus_message_new_error(msg, - ERROR_INTERFACE ".AuthenticationCanceled", - "Authentication Canceled"); - default: - return dbus_message_new_error(msg, - ERROR_INTERFACE ".AuthenticationFailed", - "Authentication Failed"); - } -} - void device_set_paired(struct btd_device *device, gboolean value) { if (device->paired == value) @@ -3660,28 +3681,6 @@ void device_bonding_failed(struct btd_device *device, uint8_t status) bonding_request_free(bonding); } -void device_cancel_bonding(struct btd_device *device, uint8_t status) -{ - struct bonding_req *bonding = device->bonding; - DBusMessage *reply; - char addr[18]; - - if (!bonding) - return; - - ba2str(&device->bdaddr, addr); - DBG("Canceling bonding request for %s", addr); - - if (device->authr) - device_cancel_authentication(device, FALSE); - - reply = new_authentication_return(bonding->msg, status); - g_dbus_send_message(btd_get_dbus_connection(), reply); - - bonding_request_cancel(bonding); - bonding_request_free(bonding); -} - static void pincode_cb(struct agent *agent, DBusError *err, const char *pin, void *data) { diff --git a/src/device.h b/src/device.h index b9f8f764a..a54420b80 100644 --- a/src/device.h +++ b/src/device.h @@ -76,7 +76,6 @@ gboolean device_is_connected(struct btd_device *device); void device_bonding_complete(struct btd_device *device, uint8_t status); gboolean device_is_bonding(struct btd_device *device, const char *sender); void device_bonding_failed(struct btd_device *device, uint8_t status); -void device_cancel_bonding(struct btd_device *device, uint8_t status); int device_request_pincode(struct btd_device *device, gboolean secure); int device_request_passkey(struct btd_device *device); int device_confirm_passkey(struct btd_device *device, uint32_t passkey, -- 2.47.3