summaryrefslogtreecommitdiff
path: root/emulator
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-11-13 18:36:40 +0900
committerMarcel Holtmann <marcel@holtmann.org>2012-11-13 18:37:34 +0900
commitbd83307026417ae846eeb824d0d4e78a13d3dd69 (patch)
tree0403ff164fdf847b8e4de77497e5aefd53092a48 /emulator
parentbf1299b6950a402d27f302f2f0531384d4834375 (diff)
downloadbluez-bd83307026417ae846eeb824d0d4e78a13d3dd69.tar.gz
emulator: Create server channel for LE only device
Diffstat (limited to 'emulator')
-rw-r--r--emulator/btdev.c4
-rw-r--r--emulator/main.c7
-rw-r--r--emulator/server.c3
-rw-r--r--emulator/server.h1
4 files changed, 14 insertions, 1 deletions
diff --git a/emulator/btdev.c b/emulator/btdev.c
index 718920b05..188ecf35b 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 84d7cf5da..bcb2db3c6 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 2436e5622..61f22757e 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 412ea686a..e63e2b273 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,
};