From 7bca8a16aba48cea38bea7f8e887a5f7bc62d07c Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 7 Jan 2013 17:22:54 +0200 Subject: [PATCH] core: Make adapter_bonding_complete private to adapter.c --- src/adapter.c | 198 +++++++++++++++++++++++++------------------------- src/adapter.h | 4 - 2 files changed, 99 insertions(+), 103 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 4e6eb57f7..b12dd330c 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -4148,64 +4148,6 @@ int btd_adapter_read_clock(struct btd_adapter *adapter, const bdaddr_t *bdaddr, return -ENOSYS; } -static void dev_disconnected(struct btd_adapter *adapter, - const struct mgmt_addr_info *addr, - uint8_t reason) -{ - struct btd_device *device; - char dst[18]; - - ba2str(&addr->bdaddr, dst); - - DBG("Device %s disconnected, reason %u", dst, reason); - - device = adapter_find_device(adapter, dst); - if (device) - adapter_remove_connection(adapter, device); - - adapter_bonding_complete(adapter, &addr->bdaddr, addr->type, - MGMT_STATUS_DISCONNECTED); -} - -static void disconnect_complete(uint8_t status, uint16_t length, - const void *param, void *user_data) -{ - const struct mgmt_rp_disconnect *rp = param; - struct btd_adapter *adapter = user_data; - - if (status != MGMT_STATUS_SUCCESS) { - error("Failed to disconnect device: %s (0x%02x)", - mgmt_errstr(status), status); - return; - } - - if (length < sizeof(*rp)) { - error("Too small device disconnect response"); - return; - } - - dev_disconnected(adapter, &rp->addr, MGMT_DEV_DISCONN_LOCAL_HOST); -} - -int btd_adapter_disconnect_device(struct btd_adapter *adapter, - const bdaddr_t *bdaddr, - uint8_t bdaddr_type) - -{ - struct mgmt_cp_disconnect cp; - - memset(&cp, 0, sizeof(cp)); - bacpy(&cp.addr.bdaddr, bdaddr); - cp.addr.type = bdaddr_type; - - if (mgmt_send(adapter->mgmt, MGMT_OP_DISCONNECT, - adapter->dev_id, sizeof(cp), &cp, - disconnect_complete, adapter, NULL) > 0) - return 0; - - return -EIO; -} - int btd_adapter_remove_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr, uint8_t bdaddr_type) { @@ -4247,6 +4189,67 @@ int btd_adapter_passkey_reply(struct btd_adapter *adapter, passkey); } +int adapter_cancel_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr, + uint8_t addr_type) +{ + struct mgmt_addr_info cp; + char addr[18]; + + ba2str(bdaddr, addr); + DBG("hci%u bdaddr %s type %u", adapter->dev_id, addr, addr_type); + + memset(&cp, 0, sizeof(cp)); + bacpy(&cp.bdaddr, bdaddr); + cp.type = addr_type; + + if (mgmt_send(adapter->mgmt, MGMT_OP_CANCEL_PAIR_DEVICE, + adapter->dev_id, sizeof(cp), &cp, + NULL, NULL, NULL) > 0) + return 0; + + return -EIO; +} + +static void check_oob_bonding_complete(struct btd_adapter *adapter, + const bdaddr_t *bdaddr, uint8_t status) +{ + if (!adapter->oob_handler || !adapter->oob_handler->bonding_cb) + return; + + if (bacmp(bdaddr, &adapter->oob_handler->remote_addr) != 0) + return; + + adapter->oob_handler->bonding_cb(adapter, bdaddr, status, + adapter->oob_handler->user_data); + + g_free(adapter->oob_handler); + adapter->oob_handler = NULL; +} + +static void adapter_bonding_complete(struct btd_adapter *adapter, + const bdaddr_t *bdaddr, + uint8_t addr_type, uint8_t status) +{ + struct btd_device *device; + char addr[18]; + + ba2str(bdaddr, addr); + if (status == 0) + device = adapter_get_device(adapter, addr, addr_type); + else + device = adapter_find_device(adapter, addr); + + if (device != NULL) + device_bonding_complete(device, status); + + if (adapter->discov_suspended) { + adapter->discov_suspended = FALSE; + mgmt_start_discovery(adapter); + } + + check_oob_bonding_complete(adapter, bdaddr, status); +} + static void pair_device_complete(uint8_t status, uint16_t length, const void *param, void *user_data) { @@ -4297,65 +4300,62 @@ int adapter_create_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr, return -EIO; } -int adapter_cancel_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr, - uint8_t addr_type) +static void dev_disconnected(struct btd_adapter *adapter, + const struct mgmt_addr_info *addr, + uint8_t reason) { - struct mgmt_addr_info cp; - char addr[18]; + struct btd_device *device; + char dst[18]; - ba2str(bdaddr, addr); - DBG("hci%u bdaddr %s type %u", adapter->dev_id, addr, addr_type); + ba2str(&addr->bdaddr, dst); - memset(&cp, 0, sizeof(cp)); - bacpy(&cp.bdaddr, bdaddr); - cp.type = addr_type; + DBG("Device %s disconnected, reason %u", dst, reason); - if (mgmt_send(adapter->mgmt, MGMT_OP_CANCEL_PAIR_DEVICE, - adapter->dev_id, sizeof(cp), &cp, - NULL, NULL, NULL) > 0) - return 0; + device = adapter_find_device(adapter, dst); + if (device) + adapter_remove_connection(adapter, device); - return -EIO; + adapter_bonding_complete(adapter, &addr->bdaddr, addr->type, + MGMT_STATUS_DISCONNECTED); } -static void check_oob_bonding_complete(struct btd_adapter *adapter, - const bdaddr_t *bdaddr, uint8_t status) +static void disconnect_complete(uint8_t status, uint16_t length, + const void *param, void *user_data) { - if (!adapter->oob_handler || !adapter->oob_handler->bonding_cb) - return; + const struct mgmt_rp_disconnect *rp = param; + struct btd_adapter *adapter = user_data; - if (bacmp(bdaddr, &adapter->oob_handler->remote_addr) != 0) + if (status != MGMT_STATUS_SUCCESS) { + error("Failed to disconnect device: %s (0x%02x)", + mgmt_errstr(status), status); return; + } - adapter->oob_handler->bonding_cb(adapter, bdaddr, status, - adapter->oob_handler->user_data); + if (length < sizeof(*rp)) { + error("Too small device disconnect response"); + return; + } - g_free(adapter->oob_handler); - adapter->oob_handler = NULL; + dev_disconnected(adapter, &rp->addr, MGMT_DEV_DISCONN_LOCAL_HOST); } -void adapter_bonding_complete(struct btd_adapter *adapter, - const bdaddr_t *bdaddr, - uint8_t addr_type, uint8_t status) -{ - struct btd_device *device; - char addr[18]; +int btd_adapter_disconnect_device(struct btd_adapter *adapter, + const bdaddr_t *bdaddr, + uint8_t bdaddr_type) - ba2str(bdaddr, addr); - if (status == 0) - device = adapter_get_device(adapter, addr, addr_type); - else - device = adapter_find_device(adapter, addr); +{ + struct mgmt_cp_disconnect cp; - if (device != NULL) - device_bonding_complete(device, status); + memset(&cp, 0, sizeof(cp)); + bacpy(&cp.addr.bdaddr, bdaddr); + cp.addr.type = bdaddr_type; - if (adapter->discov_suspended) { - adapter->discov_suspended = FALSE; - mgmt_start_discovery(adapter); - } + if (mgmt_send(adapter->mgmt, MGMT_OP_DISCONNECT, + adapter->dev_id, sizeof(cp), &cp, + disconnect_complete, adapter, NULL) > 0) + return 0; - check_oob_bonding_complete(adapter, bdaddr, status); + return -EIO; } static void auth_failed_callback(uint16_t index, uint16_t length, diff --git a/src/adapter.h b/src/adapter.h index c2cff6976..5af8d0ff0 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -172,10 +172,6 @@ int adapter_create_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr, int adapter_cancel_bonding(struct btd_adapter *adapter, const bdaddr_t *bdaddr, uint8_t addr_type); -void adapter_bonding_complete(struct btd_adapter *adapter, - const bdaddr_t *bdaddr, - uint8_t addr_type, uint8_t status); - int adapter_set_io_capability(struct btd_adapter *adapter, uint8_t io_cap); int btd_adapter_read_local_oob_data(struct btd_adapter *adapter); -- 2.47.3