Return-Path: From: Ravi kumar Veeramally To: linux-bluetooth@vger.kernel.org Cc: Ravi kumar Veeramally Subject: [PATCH_v3 2/2] android: Add initial HID disconnect implementation. Date: Tue, 29 Oct 2013 11:48:16 +0200 Message-Id: <1383040097-15475-2-git-send-email-ravikumar.veeramally@linux.intel.com> In-Reply-To: <1383040097-15475-1-git-send-email-ravikumar.veeramally@linux.intel.com> References: <1383040097-15475-1-git-send-email-ravikumar.veeramally@linux.intel.com> Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Implemented basic HID disconnect method. Host disconnects with bt device at L2CAP level. --- android/hid.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/android/hid.c b/android/hid.c index 913dab4..3479f80 100644 --- a/android/hid.c +++ b/android/hid.c @@ -278,6 +278,28 @@ static uint8_t bt_hid_connect(struct hal_cmd_hid_connect *cmd, uint16_t len) return HAL_STATUS_SUCCESS; } +static uint8_t bt_hid_disconnect(struct hal_cmd_hid_disconnect *cmd, + uint16_t len) +{ + GSList *l; + bdaddr_t dst; + + DBG(""); + + if (len < sizeof(*cmd)) + return HAL_STATUS_INVALID; + + android2bdaddr(&cmd->bdaddr, &dst); + + l = g_slist_find_custom(devices, &dst, device_cmp); + if (!l) + return HAL_STATUS_FAILED; + + hid_device_free(l->data); + + return HAL_STATUS_SUCCESS; +} + void bt_hid_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf, uint16_t len) { uint8_t status = HAL_STATUS_FAILED; @@ -287,6 +309,7 @@ void bt_hid_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf, uint16_t len) status = bt_hid_connect(buf, len); break; case HAL_OP_HID_DISCONNECT: + status = bt_hid_disconnect(buf, len); break; default: DBG("Unhandled command, opcode 0x%x", opcode); -- 1.7.9.5