Diff between 948dc088ad821869fe3b18c3095c97d57a3b816f and 2d7c9e3450bc11d8a1877d791fc4196116ed6d39

Changed Files

File Additions Deletions Status
src/shared/hciemu.c +19 -0 modified
src/shared/hciemu.h +5 -0 modified

Full Patch

diff --git a/src/shared/hciemu.c b/src/shared/hciemu.c
index 3930c99..783f000 100644
--- a/src/shared/hciemu.c
+++ b/src/shared/hciemu.c
@@ -51,6 +51,8 @@ struct hciemu {
 	guint client_source;
 	GList *post_command_hooks;
 	char bdaddr_str[18];
+	hciemu_new_conn_cb new_conn_cb;
+	void *new_conn_data;
 	hciemu_scan_enable_cb scan_enable_cb;
 	void *scan_enable_data;
 };
@@ -240,6 +242,21 @@ static void client_cmd_complete(uint16_t opcode, uint8_t status,
 	}
 }
 
+static void client_new_conn(uint16_t handle, void *user_data)
+{
+	struct hciemu *hciemu = user_data;
+
+	if (hciemu->new_conn_cb)
+		hciemu->new_conn_cb(handle, hciemu->new_conn_data);
+}
+
+void hciemu_set_new_conn_cb(struct hciemu *hciemu, hciemu_new_conn_cb cb,
+							void *user_data)
+{
+	hciemu->new_conn_cb = cb;
+	hciemu->new_conn_data = user_data;
+}
+
 static bool create_stack(struct hciemu *hciemu)
 {
 	struct btdev *btdev;
@@ -258,6 +275,8 @@ static bool create_stack(struct hciemu *hciemu)
 
 	bthost_set_cmd_complete_cb(bthost, client_cmd_complete, hciemu);
 
+	bthost_set_connect_cb(bthost, client_new_conn, hciemu);
+
 	btdev_set_command_handler(btdev, client_command_callback, hciemu);
 
 	if (socketpair(AF_UNIX, SOCK_SEQPACKET | SOCK_NONBLOCK | SOCK_CLOEXEC,
diff --git a/src/shared/hciemu.h b/src/shared/hciemu.h
index 6f5c458..9d74937 100644
--- a/src/shared/hciemu.h
+++ b/src/shared/hciemu.h
@@ -37,6 +37,11 @@ struct hciemu *hciemu_new(enum hciemu_type type);
 struct hciemu *hciemu_ref(struct hciemu *hciemu);
 void hciemu_unref(struct hciemu *hciemu);
 
+typedef void (*hciemu_new_conn_cb) (uint16_t handle, void *user_data);
+
+void hciemu_set_new_conn_cb(struct hciemu *hciemu, hciemu_new_conn_cb cb,
+							void *user_data);
+
 typedef void (*hciemu_scan_enable_cb)(uint8_t status, void *user_data);
 
 void hciemu_client_scan_enable(struct hciemu *hciemu, uint8_t scan,