From b823e9e96076902b811975264e57a5d218ac8fa8 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 27 Nov 2012 10:26:23 +0100 Subject: [PATCH] emulator: Add handling for monitor server instance --- emulator/main.c | 5 +++++ emulator/server.c | 6 ++++++ emulator/server.h | 1 + 3 files changed, 12 insertions(+) diff --git a/emulator/main.c b/emulator/main.c index 6a30c8c61..807c66396 100644 --- a/emulator/main.c +++ b/emulator/main.c @@ -65,6 +65,7 @@ int main(int argc, char *argv[]) struct server *server1; struct server *server2; struct server *server3; + struct server *server4; sigset_t mask; mainloop_init(); @@ -112,5 +113,9 @@ int main(int argc, char *argv[]) if (!server3) fprintf(stderr, "Failed to open LE server channel\n"); + server4 = server_open_unix(SERVER_TYPE_MONITOR, "/tmp/bt-server-mon"); + if (!server4) + fprintf(stderr, "Failed to open monitor server channel\n"); + return mainloop_run(); } diff --git a/emulator/server.c b/emulator/server.c index 841c2b31b..e4c4570b9 100644 --- a/emulator/server.c +++ b/emulator/server.c @@ -117,6 +117,9 @@ again: return; } + if (!client->btdev) + return; + count = client->pkt_offset + len; while (count > 0) { @@ -223,6 +226,8 @@ static void server_accept_callback(int fd, uint32_t events, void *user_data) case SERVER_TYPE_AMP: type = BTDEV_TYPE_AMP; break; + case SERVER_TYPE_MONITOR: + goto done; } client->btdev = btdev_create(type, server->id); @@ -234,6 +239,7 @@ static void server_accept_callback(int fd, uint32_t events, void *user_data) btdev_set_send_handler(client->btdev, client_write_callback, client); +done: if (mainloop_add_fd(client->fd, EPOLLIN, client_read_callback, client, client_destroy) < 0) { btdev_destroy(client->btdev); diff --git a/emulator/server.h b/emulator/server.h index e63e2b273..b99b210d1 100644 --- a/emulator/server.h +++ b/emulator/server.h @@ -28,6 +28,7 @@ enum server_type { SERVER_TYPE_BREDR, SERVER_TYPE_LE, SERVER_TYPE_AMP, + SERVER_TYPE_MONITOR, }; struct server; -- 2.47.3