Diff between bf1299b6950a402d27f302f2f0531384d4834375 and bd83307026417ae846eeb824d0d4e78a13d3dd69

Changed Files

File Additions Deletions Status
emulator/btdev.c +4 -0 modified
emulator/main.c +6 -1 modified
emulator/server.c +3 -0 modified
emulator/server.h +1 -0 modified

Full Patch

diff --git a/emulator/btdev.c b/emulator/btdev.c
index 718920b..188ecf3 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -39,6 +39,9 @@
 #define cpu_to_le16(val) (val)
 #define cpu_to_le32(val) (val)
 
+#define has_bredr(btdev)	(!((btdev)->features[4] & 0x20))
+#define has_le(btdev)		(!!((btdev)->features[4] & 0x40))
+
 struct btdev {
 	enum btdev_type type;
 
@@ -202,6 +205,7 @@ static void set_bredr_features(struct btdev *btdev)
 
 static void set_le_features(struct btdev *btdev)
 {
+	btdev->features[4] |= 0x20;	/* BR/EDR Not Supported */
 	btdev->features[4] |= 0x40;	/* LE Supported */
 	btdev->features[7] |= 0x80;	/* Extended features */
 }
diff --git a/emulator/main.c b/emulator/main.c
index 84d7cf5..bcb2db3 100644
--- a/emulator/main.c
+++ b/emulator/main.c
@@ -64,6 +64,7 @@ int main(int argc, char *argv[])
 	struct vhci *vhci;
 	struct server *server1;
 	struct server *server2;
+	struct server *server3;
 	sigset_t mask;
 
 	mainloop_init();
@@ -103,9 +104,13 @@ int main(int argc, char *argv[])
 	if (!server1)
 		fprintf(stderr, "Failed to open BR/EDR server channel\n");
 
-	server2 = server_open_unix(SERVER_TYPE_BREDR, "/tmp/bt-server-amp");
+	server2 = server_open_unix(SERVER_TYPE_AMP, "/tmp/bt-server-amp");
 	if (!server2)
 		fprintf(stderr, "Failed to open AMP server channel\n");
 
+	server3 = server_open_unix(SERVER_TYPE_LE, "/tmp/bt-server-le");
+	if (!server3)
+		fprintf(stderr, "Failed to open LE server channel\n");
+
 	return mainloop_run();
 }
diff --git a/emulator/server.c b/emulator/server.c
index 2436e56..61f2275 100644
--- a/emulator/server.c
+++ b/emulator/server.c
@@ -217,6 +217,9 @@ static void server_accept_callback(int fd, uint32_t events, void *user_data)
 	case SERVER_TYPE_BREDR:
 		type = BTDEV_TYPE_BREDR;
 		break;
+	case SERVER_TYPE_LE:
+		type = BTDEV_TYPE_LE;
+		break;
 	case SERVER_TYPE_AMP:
 		type = BTDEV_TYPE_AMP;
 		break;
diff --git a/emulator/server.h b/emulator/server.h
index 412ea68..e63e2b2 100644
--- a/emulator/server.h
+++ b/emulator/server.h
@@ -26,6 +26,7 @@
 
 enum server_type {
 	SERVER_TYPE_BREDR,
+	SERVER_TYPE_LE,
 	SERVER_TYPE_AMP,
 };