diff --git a/emulator/bthost.c b/emulator/bthost.c
index 8c1d1f9..d893c7e 100644
--- a/emulator/bthost.c
+++ b/emulator/bthost.c
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;
};
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,
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 14362d0..c11f326 100644
--- a/emulator/bthost.h
+++ b/emulator/bthost.h
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);