Linux bluetooth development
 help / color / mirror / Atom feed
* [PATCH v2 01/15] android: Remove not needed local variable in connect_hal
From: Szymon Janc @ 2013-10-25 10:49 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

err variable was set but never read.
---
 android/main.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/android/main.c b/android/main.c
index 50b5901..18dc9f7 100644
--- a/android/main.c
+++ b/android/main.c
@@ -239,12 +239,12 @@ static GIOChannel *connect_hal(GIOFunc connect_cb)
 	struct sockaddr_un addr;
 	GIOCondition cond;
 	GIOChannel *io;
-	int err, sk;
+	int sk;
 
 	sk = socket(PF_LOCAL, SOCK_SEQPACKET, 0);
 	if (sk < 0) {
-		err = errno;
-		error("Failed to create socket: %d (%s)", err, strerror(err));
+		error("Failed to create socket: %d (%s)", errno,
+							strerror(errno));
 		return NULL;
 	}
 
@@ -258,9 +258,7 @@ static GIOChannel *connect_hal(GIOFunc connect_cb)
 
 	memcpy(addr.sun_path, BLUEZ_HAL_SK_PATH, sizeof(BLUEZ_HAL_SK_PATH));
 
-	err = connect(sk, (struct sockaddr *) &addr, sizeof(addr));
-	if (err < 0) {
-		err = -errno;
+	if (connect(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
 		error("Failed to connect HAL socket: %d (%s)", errno,
 							strerror(errno));
 		g_io_channel_unref(io);
-- 
1.8.4.1


^ permalink raw reply related

* Re: [PATCH 1/2] android/client: Add source command to haltest
From: Luiz Augusto von Dentz @ 2013-10-25 10:36 UTC (permalink / raw)
  To: Jerzy Kasenberg; +Cc: linux-bluetooth@vger.kernel.org
In-Reply-To: <1382618807-14605-2-git-send-email-jerzy.kasenberg@tieto.com>

Hi Jerzy,

On Thu, Oct 24, 2013 at 3:46 PM, Jerzy Kasenberg
<jerzy.kasenberg@tieto.com> wrote:
> New command allows to read script file into tool and
> execute its contents as if it was typed.
> ---
>  android/client/haltest.c |   50 +++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 49 insertions(+), 1 deletion(-)
>
> diff --git a/android/client/haltest.c b/android/client/haltest.c
> index 189af0b..efed16e 100644
> --- a/android/client/haltest.c
> +++ b/android/client/haltest.c
> @@ -157,11 +157,47 @@ static void quit_p(int argc, const char **argv)
>         exit(0);
>  }
>
> +static int fd_stack[10];
> +static int fd_stack_pointer = 0;
> +
> +static void stdin_handler(struct pollfd *pollfd);
> +
> +static void process_file(const char *name)
> +{
> +       int fd = open(name, O_RDONLY);
> +
> +       if (fd == -1) {
> +               haltest_error("Can't open file: %s for reading\n", name);
> +               return;
> +       }

Usually for int returns we check errors with < 0, so please change the
code above to follow this practice.



-- 
Luiz Augusto von Dentz

^ permalink raw reply

* Re: [PATCH] android/client: Fix incorrect casts of addresses
From: Luiz Augusto von Dentz @ 2013-10-25 10:34 UTC (permalink / raw)
  To: Andrei Emeltchenko, Jerzy Kasenberg,
	linux-bluetooth@vger.kernel.org
In-Reply-To: <20131025100821.GD6113@aemeltch-MOBL1>

Hi Jerzy,

On Fri, Oct 25, 2013 at 1:08 PM, Andrei Emeltchenko
<andrei.emeltchenko.news@gmail.com> wrote:
> Hi Jerzy,
>
> On Fri, Oct 25, 2013 at 11:50:22AM +0200, Jerzy Kasenberg wrote:
>> Hi Andrei,
>>
>> On 25 October 2013 11:32, Andrei Emeltchenko
>> <andrei.emeltchenko.news@gmail.com> wrote:
>> > Hi Jerzy,
>> >
>> > On Fri, Oct 25, 2013 at 10:51:10AM +0200, Jerzy Kasenberg wrote:
>> >> This fixes printing of addresses.
>> >> If char is set to be signed (as it should) some addresses were
>> >> printed with leading FFFFFF.
>> >> ---
>> >> This issue did not showed up before due to unsigned char for Android build
>> >> on Qualcomm platform.
>> >>
>> >>  android/client/textconv.c |    4 ++--
>> >>  1 file changed, 2 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/android/client/textconv.c b/android/client/textconv.c
>> >> index 1188477..bcdf4d9 100644
>> >> --- a/android/client/textconv.c
>> >> +++ b/android/client/textconv.c
>> >> @@ -137,7 +137,7 @@ int int2str_findstr(const char *str, const struct int2str m[])
>> >>   */
>> >>  char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
>> >>  {
>> >> -     const char *p = (const char *) bd_addr;
>> >> +     const uint8_t *p = bd_addr->address;
>> >>
>> >>       snprintf(buf, MAX_ADDR_STR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
>> >>                                       p[0], p[1], p[2], p[3], p[4], p[5]);
>> >
>> > is this correct order btw?
>>
>> Tool print same address for my mouse as I see printed on the mouse so
>> I guess it's correct.
>
> OK, those are addresses sent through HAL, they are in different format.
>
> Best regards
> Andrei Emeltchenko
>
>>
>> >
>> > Best regards
>> > Andrei Emeltchenko
>> >
>> >> @@ -148,7 +148,7 @@ char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
>> >>  /* converts string to bt_bdaddr_t */
>> >>  void str2bt_bdaddr_t(const char *str, bt_bdaddr_t *bd_addr)
>> >>  {
>> >> -     char *p = (char *) bd_addr;
>> >> +     uint8_t *p = bd_addr->address;
>> >>
>> >>       sscanf(str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
>> >>                              &p[0], &p[1], &p[2], &p[3], &p[4], &p[5]);
>> >> --
>> >> 1.7.9.5
>> >>
>> >> --
>> >> 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
>>
>> --
>> Best regards
>> Jerzy
> --

Applied, please rebase since I had done a code style fix since
str2bt_bdaddr_t was mixing spaces with tabs.


-- 
Luiz Augusto von Dentz

^ permalink raw reply

* Re: [PATCH 06/15] android/hal: Add support for sending create bond command
From: Luiz Augusto von Dentz @ 2013-10-25 10:15 UTC (permalink / raw)
  To: Andrei Emeltchenko, Szymon Janc, linux-bluetooth@vger.kernel.org
In-Reply-To: <20131025093616.GC6113@aemeltch-MOBL1>

Hi,

On Fri, Oct 25, 2013 at 12:36 PM, Andrei Emeltchenko
<andrei.emeltchenko.news@gmail.com> wrote:
> Hi Szymon,
>
> On Fri, Oct 25, 2013 at 10:56:09AM +0200, Szymon Janc wrote:
>> This allows HAL to start bonding.
>> ---
>>  android/hal-bluetooth.c | 8 +++++---
>>  1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
>> index b81f8dd..6f7ef45 100644
>> --- a/android/hal-bluetooth.c
>> +++ b/android/hal-bluetooth.c
>> @@ -275,15 +275,17 @@ static int cancel_discovery(void)
>>
>>  static int create_bond(const bt_bdaddr_t *bd_addr)
>>  {
>> +     struct hal_cmd_create_bond cmd;
>> +
>>       DBG("");
>>
>>       if (!interface_ready())
>>               return BT_STATUS_NOT_READY;
>>
>> -     if (!bd_addr)
>> -             return BT_STATUS_PARM_INVALID;
>
> I think we can leave check here

If we are sure it will never be NULL then yes we can remove, otherwise leave it.



-- 
Luiz Augusto von Dentz

^ permalink raw reply

* Re: [PATCH] android: Cleanup error handling
From: Andrei Emeltchenko @ 2013-10-25 10:09 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth@vger.kernel.org
In-Reply-To: <CABBYNZK4B5_3wP3Og=XWgohDV0UmdqZnBro-1Onv5gtJViNgKw@mail.gmail.com>

Hi Luiz,

On Fri, Oct 25, 2013 at 12:26:12PM +0300, Luiz Augusto von Dentz wrote:
> Hi Andrei,
> 
> On Fri, Oct 25, 2013 at 11:43 AM, Andrei Emeltchenko
> <Andrei.Emeltchenko.news@gmail.com> wrote:
> > From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> >
> > Remove unneeded assignment err=errno and instead use errno directly.
> > ---
> >  android/hal-ipc.c |   26 ++++++++++----------------
> >  1 file changed, 10 insertions(+), 16 deletions(-)
> >
> > diff --git a/android/hal-ipc.c b/android/hal-ipc.c
> > index 6566ebb..20421db 100644
> > --- a/android/hal-ipc.c
> > +++ b/android/hal-ipc.c
> > @@ -150,9 +150,8 @@ static int accept_connection(int sk)
> >
> >         err = poll(&pfd, 1, CONNECT_TIMEOUT);
> >         if (err < 0) {
> > -               err = errno;
> > -               error("Failed to poll: %d (%s)", err, strerror(err));
> > -               return -1;
> > +               error("Failed to poll: %d (%s)", errno, strerror(errno));
> > +               return err;
> >         }
> >
> >         if (err == 0) {
> > @@ -161,11 +160,9 @@ static int accept_connection(int sk)
> >         }
> >
> >         new_sk = accept(sk, NULL, NULL);
> > -       if (new_sk < 0) {
> > -               err = errno;
> > -               error("Failed to accept socket: %d (%s)", err, strerror(err));
> > -               return -1;
> > -       }
> > +       if (new_sk < 0)
> > +               error("Failed to accept socket: %d (%s)", errno,
> > +                                                       strerror(errno));
> >
> >         return new_sk;
> >  }
> > @@ -178,9 +175,8 @@ bool hal_ipc_init(void)
> >
> >         sk = socket(AF_LOCAL, SOCK_SEQPACKET, 0);
> >         if (sk < 0) {
> > -               err = errno;
> > -               error("Failed to create socket: %d (%s)", err,
> > -                                                       strerror(err));
> > +               error("Failed to create socket: %d (%s)", errno,
> > +                                                       strerror(errno));
> >                 return false;
> >         }
> >
> > @@ -190,16 +186,14 @@ bool hal_ipc_init(void)
> >         memcpy(addr.sun_path, BLUEZ_HAL_SK_PATH, sizeof(BLUEZ_HAL_SK_PATH));
> >
> >         if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
> > -               err = errno;
> > -               error("Failed to bind socket: %d (%s)", err, strerror(err));
> > +               error("Failed to bind socket: %d (%s)", errno, strerror(errno));
> >                 close(sk);
> >                 return false;
> >         }
> >
> >         if (listen(sk, 2) < 0) {
> > -               err = errno;
> > -               error("Failed to listen on socket: %d (%s)", err,
> > -                                                               strerror(err));
> > +               error("Failed to listen on socket: %d (%s)", errno,
> > +                                                       strerror(errno));
> >                 close(sk);
> >                 return false;
> >         }
> > --
> > 1.7.10.4
> 
> Since the HAL is running multiple threads Im afraid errno can be
> overwritten and at least strerror_r should be used instead or use %m
> that afaik should be thread safe.

I will check does bionic supports %m %d and send the path

Best regards 
Andrei Emeltchenko 

^ permalink raw reply

* Re: [PATCH] android/client: Fix incorrect casts of addresses
From: Andrei Emeltchenko @ 2013-10-25 10:08 UTC (permalink / raw)
  To: Jerzy Kasenberg; +Cc: linux-bluetooth
In-Reply-To: <CAHCYCozKG2K+QOvX_2eYSD96DGikc-v9dK1VNtX81tLdFzXvXg@mail.gmail.com>

Hi Jerzy,

On Fri, Oct 25, 2013 at 11:50:22AM +0200, Jerzy Kasenberg wrote:
> Hi Andrei,
> 
> On 25 October 2013 11:32, Andrei Emeltchenko
> <andrei.emeltchenko.news@gmail.com> wrote:
> > Hi Jerzy,
> >
> > On Fri, Oct 25, 2013 at 10:51:10AM +0200, Jerzy Kasenberg wrote:
> >> This fixes printing of addresses.
> >> If char is set to be signed (as it should) some addresses were
> >> printed with leading FFFFFF.
> >> ---
> >> This issue did not showed up before due to unsigned char for Android build
> >> on Qualcomm platform.
> >>
> >>  android/client/textconv.c |    4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/android/client/textconv.c b/android/client/textconv.c
> >> index 1188477..bcdf4d9 100644
> >> --- a/android/client/textconv.c
> >> +++ b/android/client/textconv.c
> >> @@ -137,7 +137,7 @@ int int2str_findstr(const char *str, const struct int2str m[])
> >>   */
> >>  char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
> >>  {
> >> -     const char *p = (const char *) bd_addr;
> >> +     const uint8_t *p = bd_addr->address;
> >>
> >>       snprintf(buf, MAX_ADDR_STR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
> >>                                       p[0], p[1], p[2], p[3], p[4], p[5]);
> >
> > is this correct order btw?
> 
> Tool print same address for my mouse as I see printed on the mouse so
> I guess it's correct.

OK, those are addresses sent through HAL, they are in different format.

Best regards 
Andrei Emeltchenko 

> 
> >
> > Best regards
> > Andrei Emeltchenko
> >
> >> @@ -148,7 +148,7 @@ char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
> >>  /* converts string to bt_bdaddr_t */
> >>  void str2bt_bdaddr_t(const char *str, bt_bdaddr_t *bd_addr)
> >>  {
> >> -     char *p = (char *) bd_addr;
> >> +     uint8_t *p = bd_addr->address;
> >>
> >>       sscanf(str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
> >>                              &p[0], &p[1], &p[2], &p[3], &p[4], &p[5]);
> >> --
> >> 1.7.9.5
> >>
> >> --
> >> 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
> 
> -- 
> Best regards
> Jerzy

^ permalink raw reply

* Re: [PATCH] android/client: Fix incorrect casts of addresses
From: Jerzy Kasenberg @ 2013-10-25  9:50 UTC (permalink / raw)
  To: Andrei Emeltchenko, Jerzy Kasenberg, linux-bluetooth
In-Reply-To: <20131025093227.GB6113@aemeltch-MOBL1>

Hi Andrei,

On 25 October 2013 11:32, Andrei Emeltchenko
<andrei.emeltchenko.news@gmail.com> wrote:
> Hi Jerzy,
>
> On Fri, Oct 25, 2013 at 10:51:10AM +0200, Jerzy Kasenberg wrote:
>> This fixes printing of addresses.
>> If char is set to be signed (as it should) some addresses were
>> printed with leading FFFFFF.
>> ---
>> This issue did not showed up before due to unsigned char for Android build
>> on Qualcomm platform.
>>
>>  android/client/textconv.c |    4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/android/client/textconv.c b/android/client/textconv.c
>> index 1188477..bcdf4d9 100644
>> --- a/android/client/textconv.c
>> +++ b/android/client/textconv.c
>> @@ -137,7 +137,7 @@ int int2str_findstr(const char *str, const struct int2str m[])
>>   */
>>  char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
>>  {
>> -     const char *p = (const char *) bd_addr;
>> +     const uint8_t *p = bd_addr->address;
>>
>>       snprintf(buf, MAX_ADDR_STR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
>>                                       p[0], p[1], p[2], p[3], p[4], p[5]);
>
> is this correct order btw?

Tool print same address for my mouse as I see printed on the mouse so
I guess it's correct.

>
> Best regards
> Andrei Emeltchenko
>
>> @@ -148,7 +148,7 @@ char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
>>  /* converts string to bt_bdaddr_t */
>>  void str2bt_bdaddr_t(const char *str, bt_bdaddr_t *bd_addr)
>>  {
>> -     char *p = (char *) bd_addr;
>> +     uint8_t *p = bd_addr->address;
>>
>>       sscanf(str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
>>                              &p[0], &p[1], &p[2], &p[3], &p[4], &p[5]);
>> --
>> 1.7.9.5
>>
>> --
>> 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

-- 
Best regards
Jerzy

^ permalink raw reply

* Re: [PATCH 06/15] android/hal: Add support for sending create bond command
From: Andrei Emeltchenko @ 2013-10-25  9:36 UTC (permalink / raw)
  To: Szymon Janc; +Cc: linux-bluetooth
In-Reply-To: <1382691378-31940-6-git-send-email-szymon.janc@tieto.com>

Hi Szymon,

On Fri, Oct 25, 2013 at 10:56:09AM +0200, Szymon Janc wrote:
> This allows HAL to start bonding.
> ---
>  android/hal-bluetooth.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
> index b81f8dd..6f7ef45 100644
> --- a/android/hal-bluetooth.c
> +++ b/android/hal-bluetooth.c
> @@ -275,15 +275,17 @@ static int cancel_discovery(void)
>  
>  static int create_bond(const bt_bdaddr_t *bd_addr)
>  {
> +	struct hal_cmd_create_bond cmd;
> +
>  	DBG("");
>  
>  	if (!interface_ready())
>  		return BT_STATUS_NOT_READY;
>  
> -	if (!bd_addr)
> -		return BT_STATUS_PARM_INVALID;

I think we can leave check here

Best regards 
Andrei Emeltchenko 

> +	memcpy(cmd.bdaddr, bd_addr, sizeof(cmd.bdaddr));
>  
> -	return BT_STATUS_UNSUPPORTED;
> +	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_CREATE_BOND,
> +					sizeof(cmd), &cmd, 0, NULL, NULL);
>  }
>  
>  static int cancel_bond(const bt_bdaddr_t *bd_addr)
> -- 
> 1.8.4.1
> 
> --
> 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

* Re: [PATCH] android/client: Fix incorrect casts of addresses
From: Andrei Emeltchenko @ 2013-10-25  9:32 UTC (permalink / raw)
  To: Jerzy Kasenberg; +Cc: linux-bluetooth
In-Reply-To: <1382691070-24358-1-git-send-email-jerzy.kasenberg@tieto.com>

Hi Jerzy,

On Fri, Oct 25, 2013 at 10:51:10AM +0200, Jerzy Kasenberg wrote:
> This fixes printing of addresses.
> If char is set to be signed (as it should) some addresses were
> printed with leading FFFFFF.
> ---
> This issue did not showed up before due to unsigned char for Android build
> on Qualcomm platform.
> 
>  android/client/textconv.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/android/client/textconv.c b/android/client/textconv.c
> index 1188477..bcdf4d9 100644
> --- a/android/client/textconv.c
> +++ b/android/client/textconv.c
> @@ -137,7 +137,7 @@ int int2str_findstr(const char *str, const struct int2str m[])
>   */
>  char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
>  {
> -	const char *p = (const char *) bd_addr;
> +	const uint8_t *p = bd_addr->address;
>  
>  	snprintf(buf, MAX_ADDR_STR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
>  					p[0], p[1], p[2], p[3], p[4], p[5]);

is this correct order btw?

Best regards 
Andrei Emeltchenko 

> @@ -148,7 +148,7 @@ char *bt_bdaddr_t2str(const bt_bdaddr_t *bd_addr, char *buf)
>  /* converts string to bt_bdaddr_t */
>  void str2bt_bdaddr_t(const char *str, bt_bdaddr_t *bd_addr)
>  {
> -	char *p = (char *) bd_addr;
> +	uint8_t *p = bd_addr->address;
>  
>  	sscanf(str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
>  			       &p[0], &p[1], &p[2], &p[3], &p[4], &p[5]);
> -- 
> 1.7.9.5
> 
> --
> 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

* Re: [PATCH] android: Cleanup error handling
From: Luiz Augusto von Dentz @ 2013-10-25  9:26 UTC (permalink / raw)
  To: Andrei Emeltchenko; +Cc: linux-bluetooth@vger.kernel.org
In-Reply-To: <1382690606-20721-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>

Hi Andrei,

On Fri, Oct 25, 2013 at 11:43 AM, Andrei Emeltchenko
<Andrei.Emeltchenko.news@gmail.com> wrote:
> From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
>
> Remove unneeded assignment err=errno and instead use errno directly.
> ---
>  android/hal-ipc.c |   26 ++++++++++----------------
>  1 file changed, 10 insertions(+), 16 deletions(-)
>
> diff --git a/android/hal-ipc.c b/android/hal-ipc.c
> index 6566ebb..20421db 100644
> --- a/android/hal-ipc.c
> +++ b/android/hal-ipc.c
> @@ -150,9 +150,8 @@ static int accept_connection(int sk)
>
>         err = poll(&pfd, 1, CONNECT_TIMEOUT);
>         if (err < 0) {
> -               err = errno;
> -               error("Failed to poll: %d (%s)", err, strerror(err));
> -               return -1;
> +               error("Failed to poll: %d (%s)", errno, strerror(errno));
> +               return err;
>         }
>
>         if (err == 0) {
> @@ -161,11 +160,9 @@ static int accept_connection(int sk)
>         }
>
>         new_sk = accept(sk, NULL, NULL);
> -       if (new_sk < 0) {
> -               err = errno;
> -               error("Failed to accept socket: %d (%s)", err, strerror(err));
> -               return -1;
> -       }
> +       if (new_sk < 0)
> +               error("Failed to accept socket: %d (%s)", errno,
> +                                                       strerror(errno));
>
>         return new_sk;
>  }
> @@ -178,9 +175,8 @@ bool hal_ipc_init(void)
>
>         sk = socket(AF_LOCAL, SOCK_SEQPACKET, 0);
>         if (sk < 0) {
> -               err = errno;
> -               error("Failed to create socket: %d (%s)", err,
> -                                                       strerror(err));
> +               error("Failed to create socket: %d (%s)", errno,
> +                                                       strerror(errno));
>                 return false;
>         }
>
> @@ -190,16 +186,14 @@ bool hal_ipc_init(void)
>         memcpy(addr.sun_path, BLUEZ_HAL_SK_PATH, sizeof(BLUEZ_HAL_SK_PATH));
>
>         if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
> -               err = errno;
> -               error("Failed to bind socket: %d (%s)", err, strerror(err));
> +               error("Failed to bind socket: %d (%s)", errno, strerror(errno));
>                 close(sk);
>                 return false;
>         }
>
>         if (listen(sk, 2) < 0) {
> -               err = errno;
> -               error("Failed to listen on socket: %d (%s)", err,
> -                                                               strerror(err));
> +               error("Failed to listen on socket: %d (%s)", errno,
> +                                                       strerror(errno));
>                 close(sk);
>                 return false;
>         }
> --
> 1.7.10.4

Since the HAL is running multiple threads Im afraid errno can be
overwritten and at least strerror_r should be used instead or use %m
that afaik should be thread safe.


-- 
Luiz Augusto von Dentz

^ permalink raw reply

* [PATCH] android/client: Fix crash in tab completion
From: Jerzy Kasenberg @ 2013-10-25  9:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Jerzy Kasenberg

When user pressed tab on third or later argument when
first two did not make sense tool crashed.
Now method is checked for NULL before accessing help field.
---
 android/client/tabcompletion.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/android/client/tabcompletion.c b/android/client/tabcompletion.c
index 69af609..20d1e65 100644
--- a/android/client/tabcompletion.c
+++ b/android/client/tabcompletion.c
@@ -314,7 +314,8 @@ static void param_completion(int argc, const split_arg_t *arg,
 	const split_arg_t *tmp = arg;
 	struct command_completion_args args = {
 		.arg = arg,
-		.func = return_null
+		.func = return_null,
+		.user_help = NULL
 	};
 
 	/* prepare standard argv from arg */
@@ -326,13 +327,13 @@ static void param_completion(int argc, const split_arg_t *arg,
 	if (method != NULL && method->complete != NULL) {
 		/* ask method for completion function */
 		method->complete(argc, argv, &args.func, &args.user);
+		args.user_help = (void *) method->help;
 	}
 
 	/* If method provided enumeration function call try to complete */
 	if (args.func != NULL) {
 		args.typed = argv[argc - 1];
 		args.help = method_help;
-		args.user_help = (void *) method->help;
 
 		tab_completion(&args);
 	}
-- 
1.7.9.5


^ permalink raw reply related

* [PATCH 15/15] android: Add initial support for handling adapter get property command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

Support for HAL_BT_PROP_BDADDR property only.
---
 android/adapter.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/android/adapter.c b/android/adapter.c
index 5837e99..e6791e7 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -322,6 +322,49 @@ static bool set_mode(uint16_t opcode, uint8_t mode)
 	return false;
 }
 
+static void send_adapter_name(void)
+{
+	struct hal_ev_adapter_props_changed *ev;
+	int len;
+
+	len = sizeof(*ev) + sizeof(struct hal_property) + sizeof(bdaddr_t);
+
+	ev = g_malloc(len);
+
+	ev->num_props = 1;
+	ev->status = HAL_ERROR_SUCCESS;
+
+	ev->props[0].type = HAL_BT_PROP_BDADDR;
+	ev->props[0].len = sizeof(bdaddr_t);
+	baswap((bdaddr_t *) ev->props[0].val, &adapter->bdaddr);
+
+	ipc_send(notification_io, HAL_SERVICE_ID_BLUETOOTH,
+				HAL_EV_ADAPTER_PROPS_CHANGED, len, ev, -1);
+
+	g_free(ev);
+}
+
+static bool get_property(void *buf, uint16_t len)
+{
+	struct hal_cmd_get_adapter_prop *cmd = buf;
+
+	switch (cmd->type) {
+	case HAL_BT_PROP_BDADDR:
+		send_adapter_name();
+		return true;
+	case HAL_BT_PROP_BDNAME:
+	case HAL_BT_PROP_UUIDS:
+	case HAL_BT_PROP_CLASS_OF_DEVICE:
+	case HAL_BT_PROP_TYPE_OF_DEVICE:
+	case HAL_BT_PROP_SERVICE_RECORD:
+	case HAL_BT_PROP_ADP_SCAN_MODE:
+	case HAL_BT_PROP_ADP_BONDED_DEVICES:
+	case HAL_BT_PROP_ADP_DISC_TIMEOUT:
+	default:
+		return false;
+	}
+}
+
 void bt_adapter_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf,
 								uint16_t len)
 {
@@ -352,6 +395,13 @@ void bt_adapter_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf,
 			return;
 		}
 		break;
+	case HAL_OP_GET_ADAPTER_PROP:
+		if (get_property(buf, len)) {
+			ipc_send(io, HAL_SERVICE_ID_BLUETOOTH, opcode, 0, NULL,
+									-1);
+			return;
+		}
+		break;
 	default:
 		DBG("Unhandled command, opcode 0x%x", opcode);
 		break;
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 14/15] android: Add missing success status definition to IPC header
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This is used in HAL callbacks to indicate success.
---
 android/hal-msg.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/android/hal-msg.h b/android/hal-msg.h
index f6c9e22..089f1d6 100644
--- a/android/hal-msg.h
+++ b/android/hal-msg.h
@@ -49,6 +49,7 @@ struct hal_hdr {
 
 /* Core Service */
 
+#define HAL_ERROR_SUCCESS		0x00
 #define HAL_ERROR_FAILED		0x01
 #define HAL_ERROR_NOT_READY		0x02
 #define HAL_ERROR_NOMEM			0x03
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 13/15] android/hal: Add support for handling adapter properties change event
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

---
 android/hal-bluetooth.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index eb400ee..9c7fbea 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -35,6 +35,37 @@ static void handle_adapter_state_changed(void *buf)
 		bt_hal_cbacks->adapter_state_changed_cb(ev->state);
 }
 
+static void handle_adapter_props_changed(void *buf, uint16_t len)
+{
+	struct hal_ev_adapter_props_changed *ev = buf;
+	bt_property_t props[ev->num_props];
+	struct hal_property *hal_prop;
+	void *p;
+	int i;
+
+	if (!bt_hal_cbacks->adapter_properties_cb)
+		return;
+
+	hal_prop = ev->props;
+	p = ev->props;
+
+	for (i = 0; i < ev->num_props; i++) {
+		if (p + sizeof(*hal_prop) + hal_prop->len > buf + len) {
+			error("invalid adapter properties event, aborting");
+			exit(EXIT_FAILURE);
+		}
+
+		props[i].type = hal_prop->type;
+		props[i].len = hal_prop->len;
+		props[i].val = hal_prop->val;
+
+		p += sizeof(*hal_prop) + hal_prop->len;
+		hal_prop = p;
+	}
+
+	bt_hal_cbacks->adapter_properties_cb(ev->status, ev->num_props, props);
+}
+
 /* will be called from notification thread context */
 void bt_notify_adapter(uint16_t opcode, void *buf, uint16_t len)
 {
@@ -45,6 +76,9 @@ void bt_notify_adapter(uint16_t opcode, void *buf, uint16_t len)
 	case HAL_EV_ADAPTER_STATE_CHANGED:
 		handle_adapter_state_changed(buf);
 		break;
+	case HAL_EV_ADAPTER_PROPS_CHANGED:
+		handle_adapter_props_changed(buf, len);
+		break;
 	default:
 		DBG("Unhandled callback opcode=0x%x", opcode);
 		break;
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 12/15] android/hal: Add support for sending adapter SSP reply command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to reply to SSP request.
---
 android/hal-bluetooth.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index 6835db3..eb400ee 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -340,15 +340,21 @@ static int pin_reply(const bt_bdaddr_t *bd_addr, uint8_t accept,
 static int ssp_reply(const bt_bdaddr_t *bd_addr, bt_ssp_variant_t variant,
 					uint8_t accept, uint32_t passkey)
 {
+	struct hal_cmd_ssp_reply cmd;
+
 	DBG("");
 
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	if (!bd_addr)
-		return BT_STATUS_PARM_INVALID;
+	memcpy(cmd.bdaddr, bd_addr, sizeof(cmd.bdaddr));
+	/* type match IPC type */
+	cmd.ssp_variant = variant;
+	cmd.accept = accept;
+	cmd.passkey = passkey;
 
-	return BT_STATUS_UNSUPPORTED;
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_SSP_REPLY,
+					sizeof(cmd), &cmd, 0, NULL, NULL);
 }
 
 static const void *get_profile_interface(const char *profile_id)
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 11/15] android: Add missing SSP variant definitions to IPC header
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

---
 android/hal-msg.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/android/hal-msg.h b/android/hal-msg.h
index 7689f38..f6c9e22 100644
--- a/android/hal-msg.h
+++ b/android/hal-msg.h
@@ -169,6 +169,11 @@ struct hal_cmd_pin_reply {
 	uint8_t pin_code[16];
 } __attribute__((packed));
 
+#define HAL_BT_SSP_VARIANT_CONFIRM	0x00
+#define HAL_BT_SSP_VARIANT_ENTRY	0x01
+#define HAL_BT_SSP_VARIANT_CONSENT	0x02
+#define HAL_BT_SSP_VARIANT_NOTIF	0x03
+
 #define HAL_OP_SSP_REPLY		0x11
 struct hal_cmd_ssp_reply {
 	uint8_t  bdaddr[6];
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 10/15] android: Add missing SSP Variant definitions to IPC document
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

Those are used to specify SSP association model.
---
 android/hal-ipc-api.txt | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/android/hal-ipc-api.txt b/android/hal-ipc-api.txt
index a5437c1..0c2fd25 100644
--- a/android/hal-ipc-api.txt
+++ b/android/hal-ipc-api.txt
@@ -281,6 +281,11 @@ Commands and responses:
 		                    Passkey (4 octets)
 		Response parameters: <none>
 
+		Valid SSP variant values: 0x00 = Passkey Confirmation
+		                          0x01 = Passkey Entry
+		                          0x02 = Consent (for Just Works)
+		                          0x03 = Passkey Notification
+
 		In case of an error, the error response will be returned.
 
 	Opcode 0x12 - DUT Mode Configure command/response
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 09/15] android/hal: Add support for sending adapter PIN reply command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to reply to PIN code request.
---
 android/hal-bluetooth.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index ca443a6..6835db3 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -321,12 +321,20 @@ static int remove_bond(const bt_bdaddr_t *bd_addr)
 static int pin_reply(const bt_bdaddr_t *bd_addr, uint8_t accept,
 				uint8_t pin_len, bt_pin_code_t *pin_code)
 {
+	struct hal_cmd_pin_reply cmd;
+
 	DBG("");
 
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	return BT_STATUS_UNSUPPORTED;
+	memcpy(cmd.bdaddr, bd_addr, sizeof(cmd.bdaddr));
+	cmd.accept = accept;
+	cmd.pin_len = pin_len;
+	memcpy(cmd.pin_code, pin_code, sizeof(cmd.pin_code));
+
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_PIN_REPLY,
+					sizeof(cmd), &cmd, 0, NULL, NULL);
 }
 
 static int ssp_reply(const bt_bdaddr_t *bd_addr, bt_ssp_variant_t variant,
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 08/15] android/hal: Add support for sending adapter remove bond command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to remove bonding.
---
 android/hal-bluetooth.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index ebaa877..ca443a6 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -305,12 +305,17 @@ static int cancel_bond(const bt_bdaddr_t *bd_addr)
 
 static int remove_bond(const bt_bdaddr_t *bd_addr)
 {
+	struct hal_cmd_remove_bond cmd;
+
 	DBG("");
 
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	return BT_STATUS_UNSUPPORTED;
+	memcpy(cmd.bdaddr, bd_addr, sizeof(cmd.bdaddr));
+
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_REMOVE_BOND,
+					sizeof(cmd), &cmd, 0, NULL, NULL);
 }
 
 static int pin_reply(const bt_bdaddr_t *bd_addr, uint8_t accept,
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 07/15] android/hal: Add support for sending cancel bond command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to cancel pending bonding.
---
 android/hal-bluetooth.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index 6f7ef45..ebaa877 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -290,12 +290,17 @@ static int create_bond(const bt_bdaddr_t *bd_addr)
 
 static int cancel_bond(const bt_bdaddr_t *bd_addr)
 {
+	struct hal_cmd_cancel_bond cmd;
+
 	DBG("");
 
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	return BT_STATUS_UNSUPPORTED;
+	memcpy(cmd.bdaddr, bd_addr, sizeof(cmd.bdaddr));
+
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_CANCEL_BOND,
+					sizeof(cmd), &cmd, 0, NULL, NULL);
 }
 
 static int remove_bond(const bt_bdaddr_t *bd_addr)
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 06/15] android/hal: Add support for sending create bond command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to start bonding.
---
 android/hal-bluetooth.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index b81f8dd..6f7ef45 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -275,15 +275,17 @@ static int cancel_discovery(void)
 
 static int create_bond(const bt_bdaddr_t *bd_addr)
 {
+	struct hal_cmd_create_bond cmd;
+
 	DBG("");
 
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	if (!bd_addr)
-		return BT_STATUS_PARM_INVALID;
+	memcpy(cmd.bdaddr, bd_addr, sizeof(cmd.bdaddr));
 
-	return BT_STATUS_UNSUPPORTED;
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_CREATE_BOND,
+					sizeof(cmd), &cmd, 0, NULL, NULL);
 }
 
 static int cancel_bond(const bt_bdaddr_t *bd_addr)
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 05/15] android/hal: Add support for sending adapter get properties command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to get all adapter properties.
---
 android/hal-bluetooth.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index a71de83..b81f8dd 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -138,7 +138,8 @@ static int get_adapter_properties(void)
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	return BT_STATUS_UNSUPPORTED;
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_GET_ADAPTER_PROPS,
+						0, NULL, 0, NULL, NULL);
 }
 
 static int get_adapter_property(bt_property_type_t type)
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 04/15] android/hal: Add support for sending adapter get property command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to get adapter property.
---
 android/hal-bluetooth.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index aae6078..a71de83 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -143,12 +143,33 @@ static int get_adapter_properties(void)
 
 static int get_adapter_property(bt_property_type_t type)
 {
+	struct hal_cmd_get_adapter_prop cmd;
+
 	DBG("");
 
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	return BT_STATUS_UNSUPPORTED;
+	switch (type) {
+	case BT_PROPERTY_BDNAME:
+	case BT_PROPERTY_BDADDR:
+	case BT_PROPERTY_UUIDS:
+	case BT_PROPERTY_CLASS_OF_DEVICE:
+	case BT_PROPERTY_TYPE_OF_DEVICE:
+	case BT_PROPERTY_SERVICE_RECORD:
+	case BT_PROPERTY_ADAPTER_SCAN_MODE:
+	case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
+	case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
+		break;
+	default:
+		return BT_STATUS_PARM_INVALID;
+	}
+
+	/* type match IPC type */
+	cmd.type = type;
+
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_GET_ADAPTER_PROP,
+					sizeof(cmd), &cmd, 0, NULL, NULL);
 }
 
 static int set_adapter_property(const bt_property_t *property)
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 03/15] android/hal: Add support for sending adapter set property command
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

This allows HAL to set adapter property.
---
 android/hal-bluetooth.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index 6e28c91..aae6078 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -153,15 +153,30 @@ static int get_adapter_property(bt_property_type_t type)
 
 static int set_adapter_property(const bt_property_t *property)
 {
+	char buf[sizeof(struct hal_cmd_set_adapter_prop) + property->len];
+	struct hal_cmd_set_adapter_prop *cmd = (void *) buf;
+
 	DBG("");
 
 	if (!interface_ready())
 		return BT_STATUS_NOT_READY;
 
-	if (property == NULL)
+	switch (property->type) {
+	case BT_PROPERTY_BDNAME:
+	case BT_PROPERTY_ADAPTER_SCAN_MODE:
+	case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
+		break;
+	default:
 		return BT_STATUS_PARM_INVALID;
+	}
 
-	return BT_STATUS_UNSUPPORTED;
+	/* type match IPC type */
+	cmd->type = property->type;
+	cmd->len = property->len;
+	memcpy(cmd->val, property->val, property->len);
+
+	return hal_ipc_cmd(HAL_SERVICE_ID_BLUETOOTH, HAL_OP_SET_ADAPTER_PROP,
+					sizeof(buf), cmd, 0, NULL, NULL);
 }
 
 static int get_remote_device_properties(bt_bdaddr_t *remote_addr)
-- 
1.8.4.1


^ permalink raw reply related

* [PATCH 02/15] android: Add properties defines to hal-msg.h
From: Szymon Janc @ 2013-10-25  8:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1382691378-31940-1-git-send-email-szymon.janc@tieto.com>

HAL_BT_PROP_ADP_* are specific to adapter. HAL_BT_PROP_REM_* are
specific to remote device. Rest is common.
---
 android/hal-msg.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/android/hal-msg.h b/android/hal-msg.h
index 854e9b8..7689f38 100644
--- a/android/hal-msg.h
+++ b/android/hal-msg.h
@@ -91,6 +91,20 @@ struct hal_cmd_get_adapter_prop {
 	uint8_t type;
 } __attribute__((packed));
 
+#define HAL_BT_PROP_BDNAME		0x01
+#define HAL_BT_PROP_BDADDR		0x02
+#define HAL_BT_PROP_UUIDS		0x03
+#define HAL_BT_PROP_CLASS_OF_DEVICE	0x04
+#define HAL_BT_PROP_TYPE_OF_DEVICE	0x05
+#define HAL_BT_PROP_SERVICE_RECORD	0x06
+#define HAL_BT_PROP_ADP_SCAN_MODE	0x07
+#define HAL_BT_PROP_ADP_BONDED_DEVICES	0x08
+#define HAL_BT_PROP_ADP_DISC_TIMEOUT	0x09
+#define HAL_BT_PROP_REM_FRIENDLY_NAME	0x0a
+#define HAL_BT_PROP_REM_RSSI		0x0b
+#define HAL_BT_PROP_REM_VERSION_INFO	0x0c
+#define HAL_BT_PROP_REM_DEV_TIMESTAMP	0xFF
+
 #define HAL_OP_SET_ADAPTER_PROP		0x05
 struct hal_cmd_set_adapter_prop {
 	uint8_t  type;
-- 
1.8.4.1


^ 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