From 72e3f392d3a833a0566d18077c81a27d462a5402 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Thu, 7 Mar 2019 11:24:05 +0100 Subject: [PATCH] hci_device: use HCI_CON_HANDLE_INVALID --- src/classic/hid_device.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/classic/hid_device.c b/src/classic/hid_device.c index 1bc46fbbe..3be18b216 100644 --- a/src/classic/hid_device.c +++ b/src/classic/hid_device.c @@ -132,11 +132,12 @@ static hid_device_t * hid_device_get_instance_for_cid(uint16_t cid){ return NULL; } -static hid_device_t * hid_device_provide_instance_for_bt_addr(bd_addr_t bd_addr){ +static hid_device_t * hid_device_provide_instance_for_bd_addr(bd_addr_t bd_addr){ if (!_hid_device.cid){ memcpy(_hid_device.bd_addr, bd_addr, 6); _hid_device.cid = hid_device_get_next_cid(); _hid_device.protocol_mode = HID_PROTOCOL_MODE_REPORT; + _hid_device.con_handle = HCI_CON_HANDLE_INVALID; } return &_hid_device; } @@ -637,13 +638,13 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t * pack case PSM_HID_CONTROL: case PSM_HID_INTERRUPT: l2cap_event_incoming_connection_get_address(packet, address); - device = hid_device_provide_instance_for_bt_addr(address); + device = hid_device_provide_instance_for_bd_addr(address); if (!device) { log_error("L2CAP_EVENT_INCOMING_CONNECTION, no hid device for con handle 0x%02x", l2cap_event_incoming_connection_get_handle(packet)); l2cap_decline_connection(channel); break; } - if (device->con_handle == 0 || l2cap_event_incoming_connection_get_handle(packet) == device->con_handle){ + if (device->con_handle == HCI_CON_HANDLE_INVALID || l2cap_event_incoming_connection_get_handle(packet) == device->con_handle){ device->con_handle = l2cap_event_incoming_connection_get_handle(packet); device->incoming = 1; l2cap_event_incoming_connection_get_address(packet, device->bd_addr); @@ -918,6 +919,7 @@ uint8_t hid_device_connect(bd_addr_t addr, uint16_t * hid_cid){ } // assign hic_cid *hid_cid = hid_device_get_next_cid(); + // store address memcpy(hid_device->bd_addr, addr, 6); @@ -927,6 +929,8 @@ uint8_t hid_device_connect(bd_addr_t addr, uint16_t * hid_cid){ hid_device->connected = 0; hid_device->control_cid = 0; hid_device->interrupt_cid = 0; + hid_device->con_handle = HCI_CON_HANDLE_INVALID; + // create l2cap control using fixed HID L2CAP PSM log_info("Create outgoing HID Control"); uint8_t status = l2cap_create_channel(packet_handler, hid_device->bd_addr, PSM_HID_CONTROL, 48, &hid_device->control_cid);