Linux bluetooth development
 help / color / mirror / Atom feed
* Re: [PATCHv2 1/2] android/daemon: Implement get adapter name
From: Andrei Emeltchenko @ 2013-11-04 12:51 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth@vger.kernel.org
In-Reply-To: <CABBYNZLUUPkLM_b2DDb=mxc5-QqLrwN9in7XmZGpV+xQ-DpzzQ@mail.gmail.com>

Hi Luiz,

On Mon, Nov 04, 2013 at 01:17:35PM +0200, Luiz Augusto von Dentz wrote:
> Hi Andrei,
> 
> On Mon, Nov 4, 2013 at 12:49 PM, Andrei Emeltchenko
> <Andrei.Emeltchenko.news@gmail.com> wrote:
> > From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> >
> > ---
> >  android/adapter.c |   11 ++++++-----
> >  1 file changed, 6 insertions(+), 5 deletions(-)
> >
> > diff --git a/android/adapter.c b/android/adapter.c
> > index af461b8..fdac82e 100644
> > --- a/android/adapter.c
> > +++ b/android/adapter.c
> > @@ -1017,13 +1017,14 @@ static void send_adapter_address(void)
> >         g_free(ev);
> >  }
> >
> > -static bool get_name(void)
> > +static bool send_adapter_name(void)
> >  {
> > -       DBG("Not implemented");
> > +       if (!adapter->name)
> > +               return false;
> >
> > -       /* TODO: Add implementation */
> > +       adapter_name_changed((uint8_t *) adapter->name);
> >
> > -       return false;
> > +       return true;
> >  }
> >
> >  static bool get_uuids(void)
> > @@ -1098,7 +1099,7 @@ static bool get_property(void *buf, uint16_t len)
> >                 send_adapter_address();
> >                 return true;
> >         case HAL_PROP_ADAPTER_NAME:
> > -               return get_name();
> > +               return send_adapter_name();
> 
> Not sure why you are changing the name here, all the other properties
> is using the same format as get_<name of property>.

I am following style, look at previous function: send_adapter_address. So
shall I change that one also in a separate patch?

Best regards 
Andrei Emeltchenko 


^ permalink raw reply

* [PATCH] android/client: Fix annoying delay in command line
From: Jerzy Kasenberg @ 2013-11-04 11:33 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Jerzy Kasenberg

Move fflush(stdout) to after prints and user input.
This removes delay of showing prompt.
---
Same effect could be achieved by calling setbuf(stdout, NULL)
in terminal_setup() then all fflush calls could be removed.

If you think this should be better approach, I will change it.

 android/client/pollhandler.c |    5 -----
 android/client/terminal.c    |    6 ++++++
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/android/client/pollhandler.c b/android/client/pollhandler.c
index dd0d09f..6160921 100644
--- a/android/client/pollhandler.c
+++ b/android/client/pollhandler.c
@@ -68,11 +68,6 @@ void poll_dispatch_loop(void)
 			if (cur_fds_count != fds_count)
 				break;
 		}
-		/*
-		 * This seems to be needed for correct output handling
-		 * when all waiting is performed in poll
-		 */
-		fflush(stdout);
 	}
 }
 
diff --git a/android/client/terminal.c b/android/client/terminal.c
index e721160..22a1d8a 100644
--- a/android/client/terminal.c
+++ b/android/client/terminal.c
@@ -197,6 +197,8 @@ int terminal_vprint(const char *format, va_list args)
 
 	terminal_draw_command_line();
 
+	fflush(stdout);
+
 	return ret;
 }
 
@@ -570,6 +572,9 @@ void terminal_process_char(int c, void (*process_line)(char *line))
 		printf("%s \b", line_buf + refresh_from);
 		terminal_move_cursor(line_buf_ix - line_len);
 	}
+
+	/* Flush output after all user input */
+	fflush(stdout);
 }
 
 static struct termios origianl_tios;
@@ -596,4 +601,5 @@ void terminal_setup(void)
 	atexit(terminal_cleanup);
 
 	printf("%s", prompt);
+	fflush(stdout);
 }
-- 
1.7.9.5


^ permalink raw reply related

* [PATCH] android/client: Change interface name to bluetooth
From: Jerzy Kasenberg @ 2013-11-04 11:29 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Jerzy Kasenberg

This changes 'adapter' to 'bluetooth' as name of HAL interface.
This name matches name fond in bluetooth.h where all interfaces
are defined.
---
 android/client/if-bt.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/android/client/if-bt.c b/android/client/if-bt.c
index fb1b3f3..4c501a5 100644
--- a/android/client/if-bt.c
+++ b/android/client/if-bt.c
@@ -777,6 +777,6 @@ static struct method methods[] = {
 };
 
 const struct interface bluetooth_if = {
-	.name = "adapter",
+	.name = "bluetooth",
 	.methods = methods
 };
-- 
1.7.9.5


^ permalink raw reply related

* Re: [PATCHv2 1/2] android/daemon: Implement get adapter name
From: Luiz Augusto von Dentz @ 2013-11-04 11:17 UTC (permalink / raw)
  To: Andrei Emeltchenko; +Cc: linux-bluetooth@vger.kernel.org
In-Reply-To: <1383562180-21646-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>

Hi Andrei,

On Mon, Nov 4, 2013 at 12:49 PM, Andrei Emeltchenko
<Andrei.Emeltchenko.news@gmail.com> wrote:
> From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
>
> ---
>  android/adapter.c |   11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/android/adapter.c b/android/adapter.c
> index af461b8..fdac82e 100644
> --- a/android/adapter.c
> +++ b/android/adapter.c
> @@ -1017,13 +1017,14 @@ static void send_adapter_address(void)
>         g_free(ev);
>  }
>
> -static bool get_name(void)
> +static bool send_adapter_name(void)
>  {
> -       DBG("Not implemented");
> +       if (!adapter->name)
> +               return false;
>
> -       /* TODO: Add implementation */
> +       adapter_name_changed((uint8_t *) adapter->name);
>
> -       return false;
> +       return true;
>  }
>
>  static bool get_uuids(void)
> @@ -1098,7 +1099,7 @@ static bool get_property(void *buf, uint16_t len)
>                 send_adapter_address();
>                 return true;
>         case HAL_PROP_ADAPTER_NAME:
> -               return get_name();
> +               return send_adapter_name();

Not sure why you are changing the name here, all the other properties
is using the same format as get_<name of property>.


-- 
Luiz Augusto von Dentz

^ permalink raw reply

* [PATCH BlueZ 4/4] android/pan: Add initial code for handling commands
From: Luiz Augusto von Dentz @ 2013-11-04 10:56 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <1383562617-9029-1-git-send-email-luiz.dentz@gmail.com>

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

---
 android/main.c |  4 ++++
 android/pan.c  | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 android/pan.h  |  2 ++
 3 files changed, 62 insertions(+)

diff --git a/android/main.c b/android/main.c
index 29b3882..7d36976 100644
--- a/android/main.c
+++ b/android/main.c
@@ -272,6 +272,10 @@ static gboolean cmd_watch_cb(GIOChannel *io, GIOCondition cond,
 		bt_a2dp_handle_cmd(hal_cmd_io, msg->opcode, msg->payload,
 								msg->len);
 		break;
+	case HAL_SERVICE_ID_PAN:
+		bt_pan_handle_cmd(hal_cmd_io, msg->opcode, msg->payload,
+								msg->len);
+		break;
 	default:
 		ipc_send_rsp(hal_cmd_io, msg->service_id, HAL_STATUS_FAILED);
 		break;
diff --git a/android/pan.c b/android/pan.c
index 4b988ac..0cc3590 100644
--- a/android/pan.c
+++ b/android/pan.c
@@ -32,9 +32,65 @@
 #include "lib/bluetooth.h"
 #include "log.h"
 #include "pan.h"
+#include "hal-msg.h"
+#include "ipc.h"
 
 static GIOChannel *notification_io = NULL;
 
+static uint8_t bt_pan_enable(struct hal_cmd_pan_enable *cmd, uint16_t len)
+{
+	DBG("Not Implemented");
+
+	return HAL_STATUS_FAILED;
+}
+
+static uint8_t bt_pan_get_role(void *cmd, uint16_t len)
+{
+	DBG("Not Implemented");
+
+	return HAL_STATUS_FAILED;
+}
+
+static uint8_t bt_pan_connect(struct hal_cmd_pan_connect *cmd, uint16_t len)
+{
+	DBG("Not Implemented");
+
+	return HAL_STATUS_FAILED;
+}
+
+static uint8_t bt_pan_disconnect(struct hal_cmd_pan_connect *cmd, uint16_t len)
+{
+	DBG("Not Implemented");
+
+	return HAL_STATUS_FAILED;
+}
+
+void bt_pan_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf,
+								uint16_t len)
+{
+	uint8_t status = HAL_STATUS_FAILED;
+
+	switch (opcode) {
+	case HAL_OP_PAN_ENABLE:
+		status = bt_pan_enable(buf, len);
+		break;
+	case HAL_OP_PAN_GET_ROLE:
+		status = bt_pan_get_role(buf, len);
+		break;
+	case HAL_OP_PAN_CONNECT:
+		status = bt_pan_connect(buf, len);
+		break;
+	case HAL_OP_PAN_DISCONNECT:
+		status = bt_pan_disconnect(buf, len);
+		break;
+	default:
+		DBG("Unhandled command, opcode 0x%x", opcode);
+		break;
+	}
+
+	ipc_send_rsp(io, HAL_SERVICE_ID_A2DP, status);
+}
+
 bool bt_pan_register(GIOChannel *io, const bdaddr_t *addr)
 {
 	DBG("");
diff --git a/android/pan.h b/android/pan.h
index 318f318..1ffba9d 100644
--- a/android/pan.h
+++ b/android/pan.h
@@ -21,5 +21,7 @@
  *
  */
 
+void bt_pan_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf, uint16_t len);
+
 bool bt_pan_register(GIOChannel *io, const bdaddr_t *addr);
 void bt_pan_unregister(void);
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH BlueZ 3/4] android: Add initial skeleton for pan in the daemon
From: Luiz Augusto von Dentz @ 2013-11-04 10:56 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <1383562617-9029-1-git-send-email-luiz.dentz@gmail.com>

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

---
 android/Android.mk  |  1 +
 android/Makefile.am |  1 +
 android/main.c      |  9 +++++++++
 android/pan.c       | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 android/pan.h       | 25 +++++++++++++++++++++++++
 5 files changed, 89 insertions(+)
 create mode 100644 android/pan.c
 create mode 100644 android/pan.h

diff --git a/android/Android.mk b/android/Android.mk
index 6f537ea..77fd5a0 100644
--- a/android/Android.mk
+++ b/android/Android.mk
@@ -26,6 +26,7 @@ LOCAL_SRC_FILES := \
 	socket.c \
 	ipc.c ipc.h \
 	a2dp.c \
+	pan.c \
 	../src/log.c \
 	../src/shared/mgmt.c \
 	../src/shared/util.c \
diff --git a/android/Makefile.am b/android/Makefile.am
index df7f8ec..3c51390 100644
--- a/android/Makefile.am
+++ b/android/Makefile.am
@@ -21,6 +21,7 @@ android_bluetoothd_SOURCES = android/main.c \
 				android/ipc.h android/ipc.c \
 				android/a2dp.h android/a2dp.c \
 				android/socket.h android/socket.c \
+				android/pan.h android/pan.c \
 				btio/btio.h btio/btio.c \
 				src/sdp-client.h src/sdp-client.c
 
diff --git a/android/main.c b/android/main.c
index 75ed4bb..29b3882 100644
--- a/android/main.c
+++ b/android/main.c
@@ -54,6 +54,7 @@
 #include "hal-msg.h"
 #include "ipc.h"
 #include "a2dp.h"
+#include "pan.h"
 
 /* TODO: Consider to remove PLATFORM_SDKVERSION check if requirement
 *  for minimal Android platform version increases. */
@@ -107,6 +108,11 @@ static void service_register(void *buf, uint16_t len)
 			goto error;
 
 		break;
+	case HAL_SERVICE_ID_PAN:
+		if (!bt_a2dp_register(hal_notif_io, adapter_bdaddr))
+			goto error;
+
+		break;
 	default:
 		DBG("service %u not supported", m->service_id);
 		goto error;
@@ -143,6 +149,9 @@ static void service_unregister(void *buf, uint16_t len)
 	case HAL_SERVICE_ID_A2DP:
 		bt_a2dp_unregister();
 		break;
+	case HAL_SERVICE_ID_PAN:
+		bt_pan_unregister();
+		break;
 	default:
 		/* This would indicate bug in HAL, as unregister should not be
 		 * called in init failed */
diff --git a/android/pan.c b/android/pan.c
new file mode 100644
index 0000000..4b988ac
--- /dev/null
+++ b/android/pan.c
@@ -0,0 +1,53 @@
+/*
+ *  Copyright (C) 2013  Intel Corporation. All rights reserved.
+ *
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <glib.h>
+
+#include "lib/bluetooth.h"
+#include "log.h"
+#include "pan.h"
+
+static GIOChannel *notification_io = NULL;
+
+bool bt_pan_register(GIOChannel *io, const bdaddr_t *addr)
+{
+	DBG("");
+
+	notification_io = g_io_channel_ref(io);
+
+	return true;
+}
+
+void bt_pan_unregister(void)
+{
+	DBG("");
+
+	g_io_channel_unref(notification_io);
+	notification_io = NULL;
+}
diff --git a/android/pan.h b/android/pan.h
new file mode 100644
index 0000000..318f318
--- /dev/null
+++ b/android/pan.h
@@ -0,0 +1,25 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2013  Intel Corporation. All rights reserved.
+ *
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+bool bt_pan_register(GIOChannel *io, const bdaddr_t *addr);
+void bt_pan_unregister(void);
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH BlueZ 2/4] android/a2dp: Add initial code for handling commands
From: Luiz Augusto von Dentz @ 2013-11-04 10:56 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <1383562617-9029-1-git-send-email-luiz.dentz@gmail.com>

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

---
 android/a2dp.c | 36 ++++++++++++++++++++++++++++++++++++
 android/a2dp.h |  3 +++
 android/main.c |  4 ++++
 3 files changed, 43 insertions(+)

diff --git a/android/a2dp.c b/android/a2dp.c
index 64e5278..28ab4b1 100644
--- a/android/a2dp.c
+++ b/android/a2dp.c
@@ -35,9 +35,45 @@
 #include "lib/bluetooth.h"
 #include "log.h"
 #include "a2dp.h"
+#include "hal-msg.h"
+#include "ipc.h"
 
 static GIOChannel *notification_io = NULL;
 
+static uint8_t bt_a2dp_connect(struct hal_cmd_av_connect *cmd, uint16_t len)
+{
+	DBG("Not Implemented");
+
+	return HAL_STATUS_FAILED;
+}
+
+static uint8_t bt_a2dp_disconnect(struct hal_cmd_av_connect *cmd, uint16_t len)
+{
+	DBG("Not Implemented");
+
+	return HAL_STATUS_FAILED;
+}
+
+void bt_a2dp_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf,
+								uint16_t len)
+{
+	uint8_t status = HAL_STATUS_FAILED;
+
+	switch (opcode) {
+	case HAL_OP_AV_CONNECT:
+		status = bt_a2dp_connect(buf, len);
+		break;
+	case HAL_OP_AV_DISCONNECT:
+		status = bt_a2dp_disconnect(buf, len);
+		break;
+	default:
+		DBG("Unhandled command, opcode 0x%x", opcode);
+		break;
+	}
+
+	ipc_send_rsp(io, HAL_SERVICE_ID_A2DP, status);
+}
+
 bool bt_a2dp_register(GIOChannel *io, const bdaddr_t *addr)
 {
 	DBG("");
diff --git a/android/a2dp.h b/android/a2dp.h
index b8b14bb..a5ac53e 100644
--- a/android/a2dp.h
+++ b/android/a2dp.h
@@ -21,5 +21,8 @@
  *
  */
 
+void bt_a2dp_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf,
+								uint16_t len);
+
 bool bt_a2dp_register(GIOChannel *io, const bdaddr_t *addr);
 void bt_a2dp_unregister(void);
diff --git a/android/main.c b/android/main.c
index efa8c37..75ed4bb 100644
--- a/android/main.c
+++ b/android/main.c
@@ -259,6 +259,10 @@ static gboolean cmd_watch_cb(GIOChannel *io, GIOCondition cond,
 		bt_sock_handle_cmd(hal_cmd_io, msg->opcode, msg->payload,
 								msg->len);
 		break;
+	case HAL_SERVICE_ID_A2DP:
+		bt_a2dp_handle_cmd(hal_cmd_io, msg->opcode, msg->payload,
+								msg->len);
+		break;
 	default:
 		ipc_send_rsp(hal_cmd_io, msg->service_id, HAL_STATUS_FAILED);
 		break;
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH BlueZ 1/4] android: Add initial skeleton for a2dp in the daemon
From: Luiz Augusto von Dentz @ 2013-11-04 10:56 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

---
 android/Android.mk  |  1 +
 android/Makefile.am |  1 +
 android/a2dp.c      | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 android/a2dp.h      | 25 ++++++++++++++++++++++++
 android/main.c      |  9 +++++++++
 5 files changed, 92 insertions(+)
 create mode 100644 android/a2dp.c
 create mode 100644 android/a2dp.h

diff --git a/android/Android.mk b/android/Android.mk
index 443ac7a..6f537ea 100644
--- a/android/Android.mk
+++ b/android/Android.mk
@@ -25,6 +25,7 @@ LOCAL_SRC_FILES := \
 	hid.c \
 	socket.c \
 	ipc.c ipc.h \
+	a2dp.c \
 	../src/log.c \
 	../src/shared/mgmt.c \
 	../src/shared/util.c \
diff --git a/android/Makefile.am b/android/Makefile.am
index acbc0f5..df7f8ec 100644
--- a/android/Makefile.am
+++ b/android/Makefile.am
@@ -19,6 +19,7 @@ android_bluetoothd_SOURCES = android/main.c \
 				android/adapter.h android/adapter.c \
 				android/hid.h android/hid.c \
 				android/ipc.h android/ipc.c \
+				android/a2dp.h android/a2dp.c \
 				android/socket.h android/socket.c \
 				btio/btio.h btio/btio.c \
 				src/sdp-client.h src/sdp-client.c
diff --git a/android/a2dp.c b/android/a2dp.c
new file mode 100644
index 0000000..64e5278
--- /dev/null
+++ b/android/a2dp.c
@@ -0,0 +1,56 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2013  Intel Corporation. All rights reserved.
+ *
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <glib.h>
+
+#include "lib/bluetooth.h"
+#include "log.h"
+#include "a2dp.h"
+
+static GIOChannel *notification_io = NULL;
+
+bool bt_a2dp_register(GIOChannel *io, const bdaddr_t *addr)
+{
+	DBG("");
+
+	notification_io = g_io_channel_ref(io);
+
+	return true;
+}
+
+void bt_a2dp_unregister(void)
+{
+	DBG("");
+
+	g_io_channel_unref(notification_io);
+	notification_io = NULL;
+}
diff --git a/android/a2dp.h b/android/a2dp.h
new file mode 100644
index 0000000..b8b14bb
--- /dev/null
+++ b/android/a2dp.h
@@ -0,0 +1,25 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2013  Intel Corporation. All rights reserved.
+ *
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+bool bt_a2dp_register(GIOChannel *io, const bdaddr_t *addr);
+void bt_a2dp_unregister(void);
diff --git a/android/main.c b/android/main.c
index 1d3f10f..efa8c37 100644
--- a/android/main.c
+++ b/android/main.c
@@ -53,6 +53,7 @@
 #include "hid.h"
 #include "hal-msg.h"
 #include "ipc.h"
+#include "a2dp.h"
 
 /* TODO: Consider to remove PLATFORM_SDKVERSION check if requirement
 *  for minimal Android platform version increases. */
@@ -101,6 +102,11 @@ static void service_register(void *buf, uint16_t len)
 			goto error;
 
 		break;
+	case HAL_SERVICE_ID_A2DP:
+		if (!bt_a2dp_register(hal_notif_io, adapter_bdaddr))
+			goto error;
+
+		break;
 	default:
 		DBG("service %u not supported", m->service_id);
 		goto error;
@@ -134,6 +140,9 @@ static void service_unregister(void *buf, uint16_t len)
 	case HAL_SERVICE_ID_HIDHOST:
 		bt_hid_unregister();
 		break;
+	case HAL_SERVICE_ID_A2DP:
+		bt_a2dp_unregister();
+		break;
 	default:
 		/* This would indicate bug in HAL, as unregister should not be
 		 * called in init failed */
-- 
1.8.3.1


^ permalink raw reply related

* [PATCHv2 2/2] android/daemon: Fix setting adapter name
From: Andrei Emeltchenko @ 2013-11-04 10:49 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <1383562180-21646-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>

From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>

Android use the full string returned even if we terminate it with '\0'.
---
 android/adapter.c |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/android/adapter.c b/android/adapter.c
index fdac82e..1b84956 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -145,8 +145,8 @@ static void scan_mode_changed(void)
 static void adapter_name_changed(const uint8_t *name)
 {
 	struct hal_ev_adapter_props_changed *ev;
-	uint8_t buf[sizeof(*ev) + sizeof(struct hal_property) +
-							HAL_MAX_NAME_LENGTH];
+	size_t len = strlen((const char *) name);
+	uint8_t buf[sizeof(*ev) + sizeof(struct hal_property) + len];
 
 	memset(buf, 0, sizeof(buf));
 	ev = (void *) buf;
@@ -154,10 +154,11 @@ static void adapter_name_changed(const uint8_t *name)
 	ev->num_props = 1;
 	ev->status = HAL_STATUS_SUCCESS;
 	ev->props[0].type = HAL_PROP_ADAPTER_NAME;
-	ev->props[0].len = HAL_MAX_NAME_LENGTH;
-	memcpy(ev->props->val, name, HAL_MAX_NAME_LENGTH);
+	/* Android expects value without NULL terminator */
+	ev->props[0].len = len;
+	memcpy(ev->props->val, name, len);
 
-	DBG("Adapter name changed to: %s", ev->props->val);
+	DBG("Adapter name changed to: %s", name);
 
 	ipc_send(notification_io, HAL_SERVICE_ID_BLUETOOTH,
 			HAL_EV_ADAPTER_PROPS_CHANGED, sizeof(buf), ev, -1);
-- 
1.7.10.4


^ permalink raw reply related

* [PATCHv2 1/2] android/daemon: Implement get adapter name
From: Andrei Emeltchenko @ 2013-11-04 10:49 UTC (permalink / raw)
  To: linux-bluetooth

From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>

---
 android/adapter.c |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/android/adapter.c b/android/adapter.c
index af461b8..fdac82e 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -1017,13 +1017,14 @@ static void send_adapter_address(void)
 	g_free(ev);
 }
 
-static bool get_name(void)
+static bool send_adapter_name(void)
 {
-	DBG("Not implemented");
+	if (!adapter->name)
+		return false;
 
-	/* TODO: Add implementation */
+	adapter_name_changed((uint8_t *) adapter->name);
 
-	return false;
+	return true;
 }
 
 static bool get_uuids(void)
@@ -1098,7 +1099,7 @@ static bool get_property(void *buf, uint16_t len)
 		send_adapter_address();
 		return true;
 	case HAL_PROP_ADAPTER_NAME:
-		return get_name();
+		return send_adapter_name();
 	case HAL_PROP_ADAPTER_UUIDS:
 		return get_uuids();
 	case HAL_PROP_ADAPTER_CLASS:
-- 
1.7.10.4


^ permalink raw reply related

* Re: [PATCH] android: Bump PLATFORM_SDK_VERSION to KitKat
From: Johan Hedberg @ 2013-11-04 10:16 UTC (permalink / raw)
  To: Jerzy Kasenberg; +Cc: linux-bluetooth
In-Reply-To: <1383559573-19508-1-git-send-email-jerzy.kasenberg@tieto.com>

Hi Jerzy,

On Mon, Nov 04, 2013, Jerzy Kasenberg wrote:
> This updates PLATFORM_SDK_VERSION to 19 since
> bluetooth headers were updated already.
> ---
>  android/Makefile.am |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied. Thanks.

Johan

^ permalink raw reply

* Re: [PATCH] android: Fix not sending scan mode change notification
From: Johan Hedberg @ 2013-11-04 10:15 UTC (permalink / raw)
  To: Szymon Janc; +Cc: linux-bluetooth
In-Reply-To: <1383559199-22843-1-git-send-email-szymon.janc@tieto.com>

Hi Szymon,

On Mon, Nov 04, 2013, Szymon Janc wrote:
> Check for current settings instead of changed setting mask when
> sending notification. Otherwise scan mode change would be communicated
> only if power state changed at the same time.
> ---
>  android/adapter.c | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)

Applied. Thanks.

Johan

^ permalink raw reply

* Re: [PATCH] android/client: Fix uninitialized variable
From: Johan Hedberg @ 2013-11-04 10:14 UTC (permalink / raw)
  To: Jerzy Kasenberg; +Cc: linux-bluetooth
In-Reply-To: <1383558940-18520-1-git-send-email-jerzy.kasenberg@tieto.com>

Hi Jerzy,

On Mon, Nov 04, 2013, Jerzy Kasenberg wrote:
> Pin accept variable was intended to be set to 1
> only when pin was typed by user. If no pin was given
> accept should be set to 0. This patch fixes this.
> ---
>  android/client/if-bt.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied. Thanks.

Johan

^ permalink raw reply

* Re: [PATCH] android/daemon: Implement get adapter name
From: Johan Hedberg @ 2013-11-04 10:14 UTC (permalink / raw)
  To: Andrei Emeltchenko; +Cc: linux-bluetooth
In-Reply-To: <1383557952-9302-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>

Hi Andrei,

On Mon, Nov 04, 2013, Andrei Emeltchenko wrote:
> ---
>  android/adapter.c |   13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)

The patch doesn't compile:

android/adapter.c: In function ‘send_adapter_name’:
android/adapter.c:1024:2: error: pointer targets in passing argument 1 of ‘adapter_name_changed’ differ in signedness [-Werror=pointer-sign]
  adapter_name_changed(adapter->name);
  ^
android/adapter.c:145:13: note: expected ‘const uint8_t *’ but argument is of type ‘char *’
 static void adapter_name_changed(const uint8_t *name)
             ^
cc1: all warnings being treated as errors
make[1]: *** [android/adapter.o] Error 1

> @@ -71,6 +71,8 @@ static void mgmt_local_name_changed_event(uint16_t index, uint16_t length,
>  {
>  	const struct mgmt_cp_set_local_name *rp = param;
>  
> +	DBG("");
> +
>  	if (length < sizeof(*rp)) {
>  		error("Wrong size of local name changed parameters");
>  		return;

This change seems unrelated. Just drop it or move it to another patch.

Johan

^ permalink raw reply

* Re: [PATCH BlueZ 1/2] android/hid: Use BT_IO_OPT_SOURCE_BDADDR whenever possible
From: Johan Hedberg @ 2013-11-04 10:11 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
In-Reply-To: <1383557698-4475-1-git-send-email-luiz.dentz@gmail.com>

Hi Luiz,

On Mon, Nov 04, 2013, Luiz Augusto von Dentz wrote:
> ---
>  android/hid.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)

Both patches have been applied. Thanks.

Johan

^ permalink raw reply

* Re: [PATCH] Fix incorrect result type in set_adapter_name
From: Johan Hedberg @ 2013-11-04 10:08 UTC (permalink / raw)
  To: Marcin Kraglak; +Cc: linux-bluetooth
In-Reply-To: <1383557498-7971-1-git-send-email-marcin.kraglak@tieto.com>

Hi Marcin,

On Mon, Nov 04, 2013, Marcin Kraglak wrote:
> diff --git a/android/adapter.c b/android/adapter.c
> index af62b11..38dec9d 100644
> --- a/android/adapter.c
> +++ b/android/adapter.c
> @@ -880,7 +880,7 @@ static void set_adapter_name_complete(uint8_t status, uint16_t length,
>  	adapter_name_changed(rp->name);
>  }
>  
> -static bool set_adapter_name(uint8_t *name, uint16_t len)
> +static uint8_t set_adapter_name(uint8_t *name, uint16_t len)
>  {
>  	struct mgmt_cp_set_local_name cp;
>  
> @@ -890,11 +890,11 @@ static bool set_adapter_name(uint8_t *name, uint16_t len)
>  	if (mgmt_send(adapter->mgmt, MGMT_OP_SET_LOCAL_NAME, adapter->index,
>  			sizeof(cp), &cp, set_adapter_name_complete, NULL,
>  								NULL) > 0)
> -		return true;
> +		return HAL_STATUS_SUCCESS;
>  
>  	error("Failed to set name");
>  
> -	return false;
> +	return HAL_STATUS_FAILED;
>  }
>  
>  static void read_info_complete(uint8_t status, uint16_t length, const void *param,

Applied. Thanks.

Johan

^ permalink raw reply

* [PATCH] android: Bump PLATFORM_SDK_VERSION to KitKat
From: Jerzy Kasenberg @ 2013-11-04 10:06 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Jerzy Kasenberg

This updates PLATFORM_SDK_VERSION to 19 since
bluetooth headers were updated already.
---
 android/Makefile.am |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/android/Makefile.am b/android/Makefile.am
index 5eb8f01..acbc0f5 100644
--- a/android/Makefile.am
+++ b/android/Makefile.am
@@ -71,7 +71,7 @@ android_haltest_SOURCES = android/client/haltest.c \
 android_haltest_LDADD = android/libhal-internal.la
 
 android_haltest_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/android \
-				-DPLATFORM_SDK_VERSION=18
+				-DPLATFORM_SDK_VERSION=19
 
 android_haltest_LDFLAGS = -pthread
 
-- 
1.7.9.5


^ permalink raw reply related

* [PATCH] android: Fix not sending scan mode change notification
From: Szymon Janc @ 2013-11-04  9:59 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

Check for current settings instead of changed setting mask when
sending notification. Otherwise scan mode change would be communicated
only if power state changed at the same time.
---
 android/adapter.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/android/adapter.c b/android/adapter.c
index af62b11..efe3e8b 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -174,19 +174,20 @@ static void settings_changed(uint32_t settings)
 
 	DBG("0x%08x", changed_mask);
 
-	if (changed_mask & MGMT_SETTING_POWERED) {
+	if (changed_mask & MGMT_SETTING_POWERED)
 		powered_changed();
 
-		/*
-		 * Only when powered, the connectable and discoverable
-		 * state changes should be communicated.
-		 */
-		scan_mode_mask = MGMT_SETTING_CONNECTABLE |
-						MGMT_SETTING_DISCOVERABLE;
 
+	scan_mode_mask = MGMT_SETTING_CONNECTABLE |
+					MGMT_SETTING_DISCOVERABLE;
+
+	/*
+	 * Only when powered, the connectable and discoverable
+	 * state changes should be communicated.
+	 */
+	if (adapter->current_settings & MGMT_SETTING_POWERED)
 		if (changed_mask & scan_mode_mask)
 			scan_mode_changed();
-	}
 }
 
 static void new_settings_callback(uint16_t index, uint16_t length,
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH] android/client: Fix uninitialized variable
From: Jerzy Kasenberg @ 2013-11-04  9:55 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Jerzy Kasenberg

Pin accept variable was intended to be set to 1
only when pin was typed by user. If no pin was given
accept should be set to 0. This patch fixes this.
---
 android/client/if-bt.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/android/client/if-bt.c b/android/client/if-bt.c
index 43e8788..fb1b3f3 100644
--- a/android/client/if-bt.c
+++ b/android/client/if-bt.c
@@ -605,7 +605,7 @@ static void pin_reply_p(int argc, const char **argv)
 	bt_bdaddr_t addr;
 	bt_pin_code_t pin;
 	int pin_len = 0;
-	int accept;
+	int accept = 0;
 
 	RETURN_IF_NULL(if_bluetooth);
 	VERIFY_ADDR_ARG(2, &addr);
-- 
1.7.9.5


^ permalink raw reply related

* [PATCH] android/daemon: Implement get adapter name
From: Andrei Emeltchenko @ 2013-11-04  9:39 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <1383556934-5481-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>

From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>

---
 android/adapter.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/android/adapter.c b/android/adapter.c
index cb92f2f..55c495c 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -71,6 +71,8 @@ static void mgmt_local_name_changed_event(uint16_t index, uint16_t length,
 {
 	const struct mgmt_cp_set_local_name *rp = param;
 
+	DBG("");
+
 	if (length < sizeof(*rp)) {
 		error("Wrong size of local name changed parameters");
 		return;
@@ -1016,13 +1018,14 @@ static void send_adapter_address(void)
 	g_free(ev);
 }
 
-static bool get_name(void)
+static bool send_adapter_name(void)
 {
-	DBG("Not implemented");
+	if (!adapter->name)
+		return false;
 
-	/* TODO: Add implementation */
+	adapter_name_changed(adapter->name);
 
-	return false;
+	return true;
 }
 
 static bool get_uuids(void)
@@ -1097,7 +1100,7 @@ static bool get_property(void *buf, uint16_t len)
 		send_adapter_address();
 		return true;
 	case HAL_PROP_ADAPTER_NAME:
-		return get_name();
+		return send_adapter_name();
 	case HAL_PROP_ADAPTER_UUIDS:
 		return get_uuids();
 	case HAL_PROP_ADAPTER_CLASS:
-- 
1.7.10.4


^ permalink raw reply related

* Re: [RFC] android/daemon: Implement get adapter name
From: Andrei Emeltchenko @ 2013-11-04  9:34 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <1383556934-5481-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>

On Mon, Nov 04, 2013 at 11:22:13AM +0200, Andrei Emeltchenko wrote:
> From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>

Sorry, there is similar function exist, I will reuse it.

Best regards 
Andrei Emeltchenko 

> 
> ---
>  android/adapter.c |   29 ++++++++++++++++++++++++-----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/android/adapter.c b/android/adapter.c
> index cb92f2f..8210d1a 100644
> --- a/android/adapter.c
> +++ b/android/adapter.c
> @@ -1016,13 +1016,32 @@ static void send_adapter_address(void)
>  	g_free(ev);
>  }
>  
> -static bool get_name(void)
> +static bool send_adapter_name(void)
>  {
> -	DBG("Not implemented");
> +	struct hal_ev_adapter_props_changed *ev;
> +	size_t len;
>  
> -	/* TODO: Add implementation */
> +	if (!adapter->name)
> +		return false;
>  
> -	return false;
> +	len = sizeof(*ev) + sizeof(struct hal_property) +
> +						strlen(adapter->name) + 1;
> +
> +	ev = g_malloc0(len);
> +
> +	ev->num_props = 1;
> +	ev->status = HAL_STATUS_SUCCESS;
> +
> +	ev->props[0].type = HAL_PROP_ADAPTER_NAME;
> +	ev->props[0].len = strlen(adapter->name) + 1;
> +	memcpy(&ev->props[0].val, adapter->name, strlen(adapter->name));
> +
> +	ipc_send(notification_io, HAL_SERVICE_ID_BLUETOOTH,
> +				HAL_EV_ADAPTER_PROPS_CHANGED, len, ev, -1);
> +
> +	g_free(ev);
> +
> +	return true;
>  }
>  
>  static bool get_uuids(void)
> @@ -1097,7 +1116,7 @@ static bool get_property(void *buf, uint16_t len)
>  		send_adapter_address();
>  		return true;
>  	case HAL_PROP_ADAPTER_NAME:
> -		return get_name();
> +		return send_adapter_name();
>  	case HAL_PROP_ADAPTER_UUIDS:
>  		return get_uuids();
>  	case HAL_PROP_ADAPTER_CLASS:
> -- 
> 1.7.10.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* [PATCH BlueZ 2/2] android: Add the missing HAVE_CONFIG_H check daemon files
From: Luiz Augusto von Dentz @ 2013-11-04  9:34 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <1383557698-4475-1-git-send-email-luiz.dentz@gmail.com>

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

---
 android/hid.c    | 4 ++++
 android/ipc.c    | 4 ++++
 android/socket.c | 4 ++++
 3 files changed, 12 insertions(+)

diff --git a/android/hid.c b/android/hid.c
index 59fc90b..1ee8ed4 100644
--- a/android/hid.c
+++ b/android/hid.c
@@ -21,6 +21,10 @@
  *
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdint.h>
 #include <stdbool.h>
 #include <errno.h>
diff --git a/android/ipc.c b/android/ipc.c
index 1f52753..e672bf8 100644
--- a/android/ipc.c
+++ b/android/ipc.c
@@ -21,6 +21,10 @@
  *
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stddef.h>
 #include <errno.h>
 #include <stdint.h>
diff --git a/android/socket.c b/android/socket.c
index b6eed6e..e32be46 100644
--- a/android/socket.c
+++ b/android/socket.c
@@ -21,6 +21,10 @@
  *
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <glib.h>
 #include <stdbool.h>
 
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH BlueZ 1/2] android/hid: Use BT_IO_OPT_SOURCE_BDADDR whenever possible
From: Luiz Augusto von Dentz @ 2013-11-04  9:34 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

---
 android/hid.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/android/hid.c b/android/hid.c
index e660552..59fc90b 100644
--- a/android/hid.c
+++ b/android/hid.c
@@ -661,12 +661,11 @@ void bt_hid_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf, uint16_t len)
 static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
 {
 	struct hid_device *dev;
-	bdaddr_t dst;
+	bdaddr_t src, dst;
 	char address[18];
 	uint16_t psm;
 	GError *gerr = NULL;
 	GSList *l;
-	const bdaddr_t *src = bt_adapter_get_address();
 	uuid_t uuid;
 
 	if (err) {
@@ -675,6 +674,7 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
 	}
 
 	bt_io_get(chan, &err,
+			BT_IO_OPT_SOURCE_BDADDR, &src,
 			BT_IO_OPT_DEST_BDADDR, &dst,
 			BT_IO_OPT_PSM, &psm,
 			BT_IO_OPT_INVALID);
@@ -699,7 +699,7 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
 		dev->uhid_fd = -1;
 
 		bt_string2uuid(&uuid, HID_UUID);
-		if (bt_search_service(src, &dev->dst, &uuid,
+		if (bt_search_service(&src, &dev->dst, &uuid,
 					hid_sdp_search_cb, dev, NULL) < 0) {
 			error("failed to search sdp details");
 			hid_device_free(dev);
@@ -732,12 +732,14 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
 bool bt_hid_register(GIOChannel *io, const bdaddr_t *addr)
 {
 	GError *err = NULL;
+	const bdaddr_t *src = bt_adapter_get_address();
 
 	DBG("");
 
 	notification_io = g_io_channel_ref(io);
 
 	ctrl_io = bt_io_listen(connect_cb, NULL, NULL, NULL, &err,
+				BT_IO_OPT_SOURCE_BDADDR, &src,
 				BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL,
 				BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
 				BT_IO_OPT_INVALID);
@@ -748,6 +750,7 @@ bool bt_hid_register(GIOChannel *io, const bdaddr_t *addr)
 	}
 
 	intr_io = bt_io_listen(connect_cb, NULL, NULL, NULL, &err,
+				BT_IO_OPT_SOURCE_BDADDR, &src,
 				BT_IO_OPT_PSM, L2CAP_PSM_HIDP_INTR,
 				BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
 				BT_IO_OPT_INVALID);
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH] Fix incorrect result type in set_adapter_name
From: Marcin Kraglak @ 2013-11-04  9:31 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Marcin Kraglak

diff --git a/android/adapter.c b/android/adapter.c
index af62b11..38dec9d 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -880,7 +880,7 @@ static void set_adapter_name_complete(uint8_t status, uint16_t length,
 	adapter_name_changed(rp->name);
 }
 
-static bool set_adapter_name(uint8_t *name, uint16_t len)
+static uint8_t set_adapter_name(uint8_t *name, uint16_t len)
 {
 	struct mgmt_cp_set_local_name cp;
 
@@ -890,11 +890,11 @@ static bool set_adapter_name(uint8_t *name, uint16_t len)
 	if (mgmt_send(adapter->mgmt, MGMT_OP_SET_LOCAL_NAME, adapter->index,
 			sizeof(cp), &cp, set_adapter_name_complete, NULL,
 								NULL) > 0)
-		return true;
+		return HAL_STATUS_SUCCESS;
 
 	error("Failed to set name");
 
-	return false;
+	return HAL_STATUS_FAILED;
 }
 
 static void read_info_complete(uint8_t status, uint16_t length, const void *param,
-- 
1.8.4.1


^ permalink raw reply related

* [RFC] android/daemon: Implement get adapter name
From: Andrei Emeltchenko @ 2013-11-04  9:22 UTC (permalink / raw)
  To: linux-bluetooth

From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>

---
 android/adapter.c |   29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/android/adapter.c b/android/adapter.c
index cb92f2f..8210d1a 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -1016,13 +1016,32 @@ static void send_adapter_address(void)
 	g_free(ev);
 }
 
-static bool get_name(void)
+static bool send_adapter_name(void)
 {
-	DBG("Not implemented");
+	struct hal_ev_adapter_props_changed *ev;
+	size_t len;
 
-	/* TODO: Add implementation */
+	if (!adapter->name)
+		return false;
 
-	return false;
+	len = sizeof(*ev) + sizeof(struct hal_property) +
+						strlen(adapter->name) + 1;
+
+	ev = g_malloc0(len);
+
+	ev->num_props = 1;
+	ev->status = HAL_STATUS_SUCCESS;
+
+	ev->props[0].type = HAL_PROP_ADAPTER_NAME;
+	ev->props[0].len = strlen(adapter->name) + 1;
+	memcpy(&ev->props[0].val, adapter->name, strlen(adapter->name));
+
+	ipc_send(notification_io, HAL_SERVICE_ID_BLUETOOTH,
+				HAL_EV_ADAPTER_PROPS_CHANGED, len, ev, -1);
+
+	g_free(ev);
+
+	return true;
 }
 
 static bool get_uuids(void)
@@ -1097,7 +1116,7 @@ static bool get_property(void *buf, uint16_t len)
 		send_adapter_address();
 		return true;
 	case HAL_PROP_ADAPTER_NAME:
-		return get_name();
+		return send_adapter_name();
 	case HAL_PROP_ADAPTER_UUIDS:
 		return get_uuids();
 	case HAL_PROP_ADAPTER_CLASS:
-- 
1.7.10.4


^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox