diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2012-11-13 18:36:40 +0900 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-11-13 18:37:34 +0900 |
commit | bd83307026417ae846eeb824d0d4e78a13d3dd69 (patch) | |
tree | 0403ff164fdf847b8e4de77497e5aefd53092a48 /emulator | |
parent | bf1299b6950a402d27f302f2f0531384d4834375 (diff) | |
download | bluez-bd83307026417ae846eeb824d0d4e78a13d3dd69.tar.gz |
emulator: Create server channel for LE only device
Diffstat (limited to 'emulator')
-rw-r--r-- | emulator/btdev.c | 4 | ||||
-rw-r--r-- | emulator/main.c | 7 | ||||
-rw-r--r-- | emulator/server.c | 3 | ||||
-rw-r--r-- | emulator/server.h | 1 |
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, }; |