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
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;
};
}
}
+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;
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
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,