From d54f3c6f519310b21dcd9a397cf8ea57bd6079b9 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 27 May 2013 15:56:54 +0300 Subject: [PATCH] emulator: Add ACL connection callback to bthost --- emulator/bthost.c | 18 ++++++++++++++++++ emulator/bthost.h | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/emulator/bthost.c b/emulator/bthost.c index 8c1d1f99a..d893c7e99 100644 --- a/emulator/bthost.c +++ b/emulator/bthost.c @@ -61,6 +61,8 @@ struct bthost { uint8_t ncmd; bthost_cmd_complete_cb cmd_complete_cb; void *cmd_complete_data; + bthost_new_conn_cb new_conn_cb; + void *new_conn_data; uint16_t server_psm; uint16_t next_cid; }; @@ -346,9 +348,18 @@ static void evt_conn_complete(struct bthost *bthost, const void *data, uint8_t len) { const struct bt_hci_evt_conn_complete *ev = data; + uint16_t handle; if (len < sizeof(*ev)) return; + + if (ev->status) + return; + + handle = le16_to_cpu(ev->handle); + + if (bthost->new_conn_cb) + bthost->new_conn_cb(handle, bthost->new_conn_data); } static void evt_num_completed_packets(struct bthost *bthost, const void *data, @@ -618,6 +629,13 @@ void bthost_set_cmd_complete_cb(struct bthost *bthost, bthost->cmd_complete_data = user_data; } +void bthost_set_connect_cb(struct bthost *bthost, bthost_new_conn_cb cb, + void *user_data) +{ + bthost->new_conn_cb = cb; + bthost->new_conn_data = user_data; +} + void bthost_write_scan_enable(struct bthost *bthost, uint8_t scan) { send_command(bthost, BT_HCI_CMD_WRITE_SCAN_ENABLE, &scan, 1); diff --git a/emulator/bthost.h b/emulator/bthost.h index 14362d06b..c11f32669 100644 --- a/emulator/bthost.h +++ b/emulator/bthost.h @@ -44,6 +44,11 @@ typedef void (*bthost_cmd_complete_cb) (uint16_t opcode, uint8_t status, void bthost_set_cmd_complete_cb(struct bthost *bthost, bthost_cmd_complete_cb cb, void *user_data); +typedef void (*bthost_new_conn_cb) (uint16_t handle, void *user_data); + +void bthost_set_connect_cb(struct bthost *bthost, bthost_new_conn_cb cb, + void *user_data); + void bthost_write_scan_enable(struct bthost *bthost, uint8_t scan); void bthost_set_server_psm(struct bthost *bthost, uint16_t psm); -- 2.47.3