From: Szymon Janc Date: Thu, 24 Oct 2013 09:54:21 +0000 (+0200) Subject: android: Fix bt_adapter_init X-Git-Tag: android-x86-4.4-r3~7187 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=5d044fff918851fbd1296dfc2fd29ce77babd98d;p=android-x86%2Fexternal-bluetooth-bluez.git android: Fix bt_adapter_init Make bt_adapter_init return void and use ready callback for error reporting. This also fix returning incorrect status and invalid mgmt_if unref (mgmt_send return 0 on error or >0 on success). --- diff --git a/android/adapter.c b/android/adapter.c index 88ac19fe4..160623ae4 100644 --- a/android/adapter.c +++ b/android/adapter.c @@ -277,24 +277,22 @@ failed: adapter->ready(NULL, err); } -bool bt_adapter_init(uint16_t index, struct mgmt *mgmt_if, - bt_adapter_ready ready) +void bt_adapter_init(uint16_t index, struct mgmt *mgmt, bt_adapter_ready cb) { struct bt_adapter *adapter; adapter = g_new0(struct bt_adapter, 1); - adapter->mgmt = mgmt_ref(mgmt_if); + adapter->mgmt = mgmt_ref(mgmt); adapter->index = index; - adapter->ready = ready; + adapter->ready = cb; - if (mgmt_send(mgmt_if, MGMT_OP_READ_INFO, index, 0, NULL, - read_info_complete, adapter, NULL) > 0) { - mgmt_unref(mgmt_if); - return false; - } + if (mgmt_send(mgmt, MGMT_OP_READ_INFO, index, 0, NULL, + read_info_complete, adapter, NULL) > 0) + return; - return adapter; + mgmt_unref(mgmt); + adapter->ready(adapter, -EIO); } static void set_mode_complete(uint8_t status, uint16_t length, diff --git a/android/adapter.h b/android/adapter.h index b8d0a5851..236f10ae1 100644 --- a/android/adapter.h +++ b/android/adapter.h @@ -32,8 +32,8 @@ struct bt_adapter; typedef void (*bt_adapter_ready)(struct bt_adapter *adapter, int err); -bool bt_adapter_init(uint16_t index, struct mgmt *mgmt_if, - bt_adapter_ready func); +void bt_adapter_init(uint16_t index, struct mgmt *mgmt_if, + bt_adapter_ready cb); void bt_adapter_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf, uint16_t len);