* [PATCH] android/tester: Fix syntax of test cases
From: Andrei Emeltchenko @ 2013-12-16 8:03 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Remove "Test" from every test message print and correct typo.
---
android/android-tester.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/android/android-tester.c b/android/android-tester.c
index f388d94..a58104d 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
@@ -811,7 +811,7 @@ static const struct socket_data btsock_inv_params_chan_uuid = {
.expected_status = BT_STATUS_PARM_INVALID,
};
-static const struct socket_data btsock_sucess = {
+static const struct socket_data btsock_success = {
.sock_type = BTSOCK_RFCOMM,
.channel = 1,
.service_uuid = NULL,
@@ -980,66 +980,66 @@ int main(int argc, char *argv[])
tester_init(&argc, &argv);
- test_bredrle("Test Init", NULL, setup_base, test_dummy, teardown);
+ test_bredrle("Init", NULL, setup_base, test_dummy, teardown);
- test_bredrle("Test Enable - Success", &bluetooth_enable_success_test,
+ test_bredrle("Enable - Success", &bluetooth_enable_success_test,
setup_base, test_enable, teardown);
- test_bredrle("Test Enable - Done", &bluetooth_enable_done_test,
+ test_bredrle("Enable - Done", &bluetooth_enable_done_test,
setup_enabled_adapter, test_enable_done, teardown);
- test_bredrle("Test Disable - Success", &bluetooth_disable_success_test,
+ test_bredrle("Disable - Success", &bluetooth_disable_success_test,
setup_enabled_adapter, test_disable, teardown);
- test_bredrle("Test Set BDNAME - Success",
+ test_bredrle("Set BDNAME - Success",
&bluetooth_setprop_bdname_success_test,
setup_enabled_adapter,
test_setprop_bdname_success, teardown);
- test_bredrle("Test Set SCAN_MODE - Success",
+ test_bredrle("Set SCAN_MODE - Success",
&bluetooth_setprop_scanmode_success_test,
setup_enabled_adapter,
test_setprop_scanmode_succes, teardown);
- test_bredrle("Test Set DISCOVERY_TIMEOUT - Success",
+ test_bredrle("Set DISCOVERY_TIMEOUT - Success",
&bluetooth_setprop_disctimeout_success_test,
setup_enabled_adapter,
test_setprop_disctimeout_succes, teardown);
- test_bredrle("Test Get BDADDR - Success",
+ test_bredrle("Get BDADDR - Success",
&bluetooth_getprop_bdaddr_success_test,
setup_enabled_adapter,
test_getprop_bdaddr_success, teardown);
- test_bredrle("Test Get BDNAME - Success",
+ test_bredrle("Get BDNAME - Success",
&bluetooth_getprop_bdname_success_test,
setup_enabled_adapter,
test_getprop_bdname_success, teardown);
- test_bredrle("Test Socket Init", NULL, setup_socket_interface,
+ test_bredrle("Socket Init", NULL, setup_socket_interface,
test_dummy, teardown);
- test_bredrle("Test Socket Listen - Invalid: sock_type 0",
+ test_bredrle("Socket Listen - Invalid: sock_type 0",
&btsock_inv_param_socktype, setup_socket_interface,
test_generic_listen, teardown);
- test_bredrle("Test Socket Listen - Invalid: sock_type L2CAP",
+ test_bredrle("Socket Listen - Invalid: sock_type L2CAP",
&btsock_inv_param_socktype_l2cap,
setup_socket_interface, test_generic_listen, teardown);
- test_bredrle("Test Socket Listen - Invalid: chan, uuid",
+ test_bredrle("Socket Listen - Invalid: chan, uuid",
&btsock_inv_params_chan_uuid,
setup_socket_interface, test_generic_listen, teardown);
- test_bredrle("Test Socket Listen - Check returned fd valid",
- &btsock_sucess,
+ test_bredrle("Socket Listen - Check returned fd valid",
+ &btsock_success,
setup_socket_interface, test_generic_listen, teardown);
- test_bredrle("Test Socket Connect - Invalid: sock_type 0",
+ test_bredrle("Socket Connect - Invalid: sock_type 0",
&btsock_inv_param_socktype, setup_socket_interface,
test_generic_connect, teardown);
- test_bredrle("Test Socket Connect - Invalid: sock_type L2CAP",
+ test_bredrle("Socket Connect - Invalid: sock_type L2CAP",
&btsock_inv_param_socktype_l2cap,
setup_socket_interface, test_generic_connect, teardown);
--
1.8.3.2
^ permalink raw reply related
* Re: [PATCH] Adding missing test scripts to Makefile.tools
From: Johan Hedberg @ 2013-12-16 8:06 UTC (permalink / raw)
To: Sebastian Chlad; +Cc: linux-bluetooth, Sebastian Chlad
In-Reply-To: <1387108069-9616-1-git-send-email-sebastianx.chlad@intel.com>
Hi Sebastian,
On Sun, Dec 15, 2013, Sebastian Chlad wrote:
> ---
> Makefile.tools | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
Applied (after fixing up the commit message prefix). Thanks.
Johan
^ permalink raw reply
* Re: [PATCH] emulator/bthost: Fix use after free in bthost_destroy
From: Johan Hedberg @ 2013-12-16 8:07 UTC (permalink / raw)
To: Szymon Janc; +Cc: linux-bluetooth
In-Reply-To: <1387137348-5377-1-git-send-email-szymon.janc@gmail.com>
Hi Szymon,
On Sun, Dec 15, 2013, Szymon Janc wrote:
> cmd was dereferenced after free. Use temp pointer for freeing.
> ---
> emulator/bthost.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
Applied. Thanks.
Johan
^ permalink raw reply
* Re: [PATCH] android/tester: Fix syntax of test cases
From: Johan Hedberg @ 2013-12-16 8:11 UTC (permalink / raw)
To: Andrei Emeltchenko; +Cc: linux-bluetooth
In-Reply-To: <1387181005-12044-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
Hi Andrei,
On Mon, Dec 16, 2013, Andrei Emeltchenko wrote:
> Remove "Test" from every test message print and correct typo.
> ---
> android/android-tester.c | 36 ++++++++++++++++++------------------
> 1 file changed, 18 insertions(+), 18 deletions(-)
Applied. Thanks.
Johan
^ permalink raw reply
* Re: [PATCH] Add PICS, PIXITs and PTS test results for L2CAP
From: Johan Hedberg @ 2013-12-16 8:17 UTC (permalink / raw)
To: Sebastian Chlad; +Cc: linux-bluetooth, Sebastian Chlad
In-Reply-To: <1387147192-19246-1-git-send-email-sebastianx.chlad@intel.com>
Hi Sebastian,
On Sun, Dec 15, 2013, Sebastian Chlad wrote:
> +* - different than PTS defaults
> +# - not yet implemented/supported
> +
> +M - mandatory
> +O - optional
> +
> + Roles
> +-------------------------------------------------------------------------------
> +Parameter Name Selected Description
> +-------------------------------------------------------------------------------
> +TSPC_L2CAP_1_1 True Data Channel Initiator (C.1)
> +TSPC_L2CAP_1_2 True Data Channel Acceptor (C.1)
> +TSPC_L2CAP_1_3 False (#) LE Master (C.2)
> +TSPC_L2CAP_1_4 False (#) LE Slave (C.2)
I thought the idea of the '#' notation was that we could mark entries as
True if they eventually will be supported but are not yet implemented.
Wouldn't these last two entries fall under this category.
> +-------------------------------------------------------------------------------
> +Test Name Result Notes
> +-------------------------------------------------------------------------------
> +TC_COS_CED_BV_01_C INC IUT should introduce testing tools
> +TC_COS_CED_BV_03_C INC IUT should introduce testing tools
What does the note here mean. l2test? If so wouldn't it be more helpful
to list the exact l2test command that's needs to be run?
Johan
^ permalink raw reply
* [PATCH 1/3] android/tester: Add Socket test read channel number after listen
From: Andrei Emeltchenko @ 2013-12-16 8:38 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
After listen() call Bluedroid sends channel number as (int) through file
descriptor.
---
android/android-tester.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/android/android-tester.c b/android/android-tester.c
index a58104d..9b56616 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
@@ -82,6 +82,7 @@ struct socket_data {
int channel;
int flags;
bt_status_t expected_status;
+ bool test_channel;
};
#define WAIT_FOR_SIGNAL_TIME 2 /* in seconds */
@@ -820,6 +821,16 @@ static const struct socket_data btsock_success = {
.expected_status = BT_STATUS_SUCCESS,
};
+static const struct socket_data btsock_success_check_chan = {
+ .sock_type = BTSOCK_RFCOMM,
+ .channel = 1,
+ .service_uuid = NULL,
+ .service_name = "Test service",
+ .flags = 0,
+ .expected_status = BT_STATUS_SUCCESS,
+ .test_channel = true,
+};
+
static void setup_socket_interface(const void *test_data)
{
struct test_data *data = tester_get_data();
@@ -857,6 +868,18 @@ static void test_generic_listen(const void *test_data)
return;
}
+ if (status == BT_STATUS_SUCCESS && test->test_channel) {
+ int channel, len;
+
+ len = read(sock_fd, &channel, sizeof(channel));
+ if (len != sizeof(channel) || channel != test->channel) {
+ tester_test_failed();
+ goto clean;
+ }
+
+ tester_print("read correct channel: %d", channel);
+ }
+
tester_test_passed();
clean:
@@ -1035,6 +1058,10 @@ int main(int argc, char *argv[])
&btsock_success,
setup_socket_interface, test_generic_listen, teardown);
+ test_bredrle("Socket Listen - Check returned channel",
+ &btsock_success_check_chan,
+ setup_socket_interface, test_generic_listen, teardown);
+
test_bredrle("Socket Connect - Invalid: sock_type 0",
&btsock_inv_param_socktype, setup_socket_interface,
test_generic_connect, teardown);
--
1.8.3.2
^ permalink raw reply related
* [PATCH 2/3] android/tester: Add Socket test invalid chan and uuid
From: Andrei Emeltchenko @ 2013-12-16 8:38 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1387183137-19439-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
At least one of parameters: channel or uuid shouldn't be zero.
---
android/android-tester.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/android/android-tester.c b/android/android-tester.c
index 9b56616..9acc79d 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
@@ -804,6 +804,7 @@ static const struct socket_data btsock_inv_param_socktype_l2cap = {
/* Test invalid: channel & uuid are both zeroes */
static const struct socket_data btsock_inv_params_chan_uuid = {
+ .bdaddr = &bdaddr_dummy,
.sock_type = BTSOCK_RFCOMM,
.channel = 0,
.service_uuid = NULL,
@@ -1070,5 +1071,9 @@ int main(int argc, char *argv[])
&btsock_inv_param_socktype_l2cap,
setup_socket_interface, test_generic_connect, teardown);
+ test_bredrle("Socket Connect - Invalid: chan, uuid",
+ &btsock_inv_params_chan_uuid,
+ setup_socket_interface, test_generic_connect, teardown);
+
return tester_run();
}
--
1.8.3.2
^ permalink raw reply related
* [PATCH 3/3] android/tester: Add Socket test invalid bdaddr
From: Andrei Emeltchenko @ 2013-12-16 8:38 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1387183137-19439-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Test for zero bluetooth address in connect().
---
android/android-tester.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/android/android-tester.c b/android/android-tester.c
index 9acc79d..eb938d0 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
@@ -832,6 +832,16 @@ static const struct socket_data btsock_success_check_chan = {
.test_channel = true,
};
+static const struct socket_data btsock_inv_param_bdaddr = {
+ .bdaddr = NULL,
+ .sock_type = BTSOCK_RFCOMM,
+ .channel = 1,
+ .service_uuid = NULL,
+ .service_name = "Test service",
+ .flags = 0,
+ .expected_status = BT_STATUS_PARM_INVALID,
+};
+
static void setup_socket_interface(const void *test_data)
{
struct test_data *data = tester_get_data();
@@ -1075,5 +1085,9 @@ int main(int argc, char *argv[])
&btsock_inv_params_chan_uuid,
setup_socket_interface, test_generic_connect, teardown);
+ test_bredrle("Socket Connect - Invalid: bdaddr",
+ &btsock_inv_param_bdaddr,
+ setup_socket_interface, test_generic_connect, teardown);
+
return tester_run();
}
--
1.8.3.2
^ permalink raw reply related
* [PATCH 1/5] btmgmt: Remove unneeded code
From: Andrei Emeltchenko @ 2013-12-16 8:57 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
tools/btmgmt.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/tools/btmgmt.c b/tools/btmgmt.c
index 1d71d74..f31d8b1 100644
--- a/tools/btmgmt.c
+++ b/tools/btmgmt.c
@@ -555,7 +555,6 @@ static void user_confirm(uint16_t index, uint16_t len, const void *param,
rsp_len = strlen(rsp);
if (rsp[rsp_len - 1] == '\n') {
rsp[rsp_len - 1] = '\0';
- rsp_len--;
}
if (rsp[0] == 'y' || rsp[0] == 'Y')
--
1.8.3.2
^ permalink raw reply related
* [PATCH 2/5] avdtp: Remove unneeded local variable
From: Andrei Emeltchenko @ 2013-12-16 8:57 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1387184262-21439-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
profiles/audio/avdtp.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/profiles/audio/avdtp.c b/profiles/audio/avdtp.c
index f866b39..e12ad9d 100644
--- a/profiles/audio/avdtp.c
+++ b/profiles/audio/avdtp.c
@@ -773,10 +773,9 @@ static int get_send_buffer_size(int sk)
socklen_t optlen = sizeof(size);
if (getsockopt(sk, SOL_SOCKET, SO_SNDBUF, &size, &optlen) < 0) {
- int err = -errno;
- error("getsockopt(SO_SNDBUF) failed: %s (%d)", strerror(-err),
- -err);
- return err;
+ error("getsockopt(SO_SNDBUF) failed: %s (%d)", strerror(errno),
+ errno);
+ return -errno;
}
/*
@@ -792,10 +791,9 @@ static int set_send_buffer_size(int sk, int size)
socklen_t optlen = sizeof(size);
if (setsockopt(sk, SOL_SOCKET, SO_SNDBUF, &size, optlen) < 0) {
- int err = -errno;
- error("setsockopt(SO_SNDBUF) failed: %s (%d)", strerror(-err),
- -err);
- return err;
+ error("setsockopt(SO_SNDBUF) failed: %s (%d)", strerror(errno),
+ errno);
+ return -errno;
}
return 0;
--
1.8.3.2
^ permalink raw reply related
* [PATCH 3/5] hciemu: Make code consistent
From: Andrei Emeltchenko @ 2013-12-16 8:57 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1387184262-21439-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
It is enough to check for zero in __sync_sub_and_fetch(). This makes
code consistent like shown below:
./src/shared/mgmt.c: if (__sync_sub_and_fetch(&mgmt->ref_count, 1))
./src/shared/pcap.c: if (__sync_sub_and_fetch(&pcap->ref_count, 1))
./src/shared/btsnoop.c: if (__sync_sub_and_fetch(&btsnoop->ref_count, 1))
./src/shared/hciemu.c: if (__sync_sub_and_fetch(&hciemu->ref_count, 1))
---
src/shared/hciemu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/shared/hciemu.c b/src/shared/hciemu.c
index 0ea191f..c2b4748 100644
--- a/src/shared/hciemu.c
+++ b/src/shared/hciemu.c
@@ -341,7 +341,7 @@ void hciemu_unref(struct hciemu *hciemu)
if (!hciemu)
return;
- if (__sync_sub_and_fetch(&hciemu->ref_count, 1) > 0)
+ if (__sync_sub_and_fetch(&hciemu->ref_count, 1))
return;
g_list_foreach(hciemu->post_command_hooks, destroy_command_hook, NULL);
--
1.8.3.2
^ permalink raw reply related
* [PATCH 4/5] l2cap-tester: Remove unneeded variable
From: Andrei Emeltchenko @ 2013-12-16 8:57 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1387184262-21439-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
err is only used to assign -errno before return.
---
tools/l2cap-tester.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/tools/l2cap-tester.c b/tools/l2cap-tester.c
index e4dade2..4b1e5e2 100644
--- a/tools/l2cap-tester.c
+++ b/tools/l2cap-tester.c
@@ -489,15 +489,14 @@ static int create_l2cap_sock(struct test_data *data, uint16_t psm)
{
const uint8_t *master_bdaddr;
struct sockaddr_l2 addr;
- int sk, err;
+ int sk;
sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET | SOCK_NONBLOCK,
BTPROTO_L2CAP);
if (sk < 0) {
- err = -errno;
tester_warn("Can't create socket: %s (%d)", strerror(errno),
errno);
- return err;
+ return -errno;
}
master_bdaddr = hciemu_get_master_bdaddr(data->hciemu);
@@ -517,11 +516,10 @@ static int create_l2cap_sock(struct test_data *data, uint16_t psm)
addr.l2_bdaddr_type = BDADDR_BREDR;
if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
- err = -errno;
tester_warn("Can't bind socket: %s (%d)", strerror(errno),
errno);
close(sk);
- return err;
+ return -errno;
}
return sk;
--
1.8.3.2
^ permalink raw reply related
* [PATCH 5/5] hciemu: Print error in case hci_vhci is not loaded
From: Andrei Emeltchenko @ 2013-12-16 8:57 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1387184262-21439-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Error message should indicate that module is not loaded:
Opening /dev/vhci failed: No such file or directory
---
src/shared/hciemu.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/shared/hciemu.c b/src/shared/hciemu.c
index c2b4748..9f4bfaf 100644
--- a/src/shared/hciemu.c
+++ b/src/shared/hciemu.c
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
+#include <errno.h>
#include <sys/socket.h>
#include <glib.h>
@@ -216,6 +217,7 @@ static bool create_vhci(struct hciemu *hciemu)
fd = open("/dev/vhci", O_RDWR | O_NONBLOCK | O_CLOEXEC);
if (fd < 0) {
+ perror("Opening /dev/vhci failed");
btdev_destroy(btdev);
return false;
}
--
1.8.3.2
^ permalink raw reply related
* Re: [PATCH 1/3] android/tester: Add Socket test read channel number after listen
From: Johan Hedberg @ 2013-12-16 9:14 UTC (permalink / raw)
To: Andrei Emeltchenko; +Cc: linux-bluetooth
In-Reply-To: <1387183137-19439-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
Hi Andrei,
On Mon, Dec 16, 2013, Andrei Emeltchenko wrote:
> After listen() call Bluedroid sends channel number as (int) through file
> descriptor.
> ---
> android/android-tester.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
All three patches have been applied. Thanks.
Johan
^ permalink raw reply
* Re: [PATCH 2/5] avdtp: Remove unneeded local variable
From: Johan Hedberg @ 2013-12-16 9:18 UTC (permalink / raw)
To: Andrei Emeltchenko; +Cc: linux-bluetooth
In-Reply-To: <1387184262-21439-2-git-send-email-Andrei.Emeltchenko.news@gmail.com>
Hi Andrei,
On Mon, Dec 16, 2013, Andrei Emeltchenko wrote:
> ---
> profiles/audio/avdtp.c | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
I've applied all patches except these ones claiming to remove an
unneeded err variable.
> diff --git a/profiles/audio/avdtp.c b/profiles/audio/avdtp.c
> index f866b39..e12ad9d 100644
> --- a/profiles/audio/avdtp.c
> +++ b/profiles/audio/avdtp.c
> @@ -773,10 +773,9 @@ static int get_send_buffer_size(int sk)
> socklen_t optlen = sizeof(size);
>
> if (getsockopt(sk, SOL_SOCKET, SO_SNDBUF, &size, &optlen) < 0) {
> - int err = -errno;
> - error("getsockopt(SO_SNDBUF) failed: %s (%d)", strerror(-err),
> - -err);
> - return err;
> + error("getsockopt(SO_SNDBUF) failed: %s (%d)", strerror(errno),
> + errno);
> + return -errno;
> }
This is not an unneeded variable. The error() call itself might cause
the value of errno to be modified and hence you'd be returning not the
getsockopt error but something else.
Johan
^ permalink raw reply
* CSR 8510 HID Proxy
From: Abimanyu G @ 2013-12-16 9:39 UTC (permalink / raw)
To: linux-bluetooth
Hi everyone,
hid2hci tool is not working on latest CSR 8510 chips can any one fix it.
Regards,
Abimanyu G
^ permalink raw reply
* Re: [PATCH 4/5] l2cap-tester: Remove unneeded variable
From: Anderson Lizardo @ 2013-12-16 10:39 UTC (permalink / raw)
To: Andrei Emeltchenko; +Cc: BlueZ development
In-Reply-To: <1387184262-21439-4-git-send-email-Andrei.Emeltchenko.news@gmail.com>
Hi Andrei,
On Mon, Dec 16, 2013 at 4:57 AM, Andrei Emeltchenko
<Andrei.Emeltchenko.news@gmail.com> wrote:
> --- a/tools/l2cap-tester.c
> +++ b/tools/l2cap-tester.c
> @@ -489,15 +489,14 @@ static int create_l2cap_sock(struct test_data *data, uint16_t psm)
> {
> const uint8_t *master_bdaddr;
> struct sockaddr_l2 addr;
> - int sk, err;
> + int sk;
>
> sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET | SOCK_NONBLOCK,
> BTPROTO_L2CAP);
> if (sk < 0) {
> - err = -errno;
> tester_warn("Can't create socket: %s (%d)", strerror(errno),
> errno);
> - return err;
> + return -errno;
> }
>
> master_bdaddr = hciemu_get_master_bdaddr(data->hciemu);
> @@ -517,11 +516,10 @@ static int create_l2cap_sock(struct test_data *data, uint16_t psm)
> addr.l2_bdaddr_type = BDADDR_BREDR;
>
> if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
> - err = -errno;
> tester_warn("Can't bind socket: %s (%d)", strerror(errno),
> errno);
> close(sk);
> - return err;
> + return -errno;
This is not a good idea because close() will overwrite the original
error if it fails as well. The previous situation is also valid
because tester_warn() may call library functions that set errno.
Best Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil
^ permalink raw reply
* Re: [PATCH 4/5] l2cap-tester: Remove unneeded variable
From: Andrei Emeltchenko @ 2013-12-16 10:50 UTC (permalink / raw)
To: Anderson Lizardo; +Cc: BlueZ development
In-Reply-To: <CAJdJm_NJCUAeMkvGMYLah3L__DECCd_ocPyd-F46KrcdmCuGMg@mail.gmail.com>
Hi Anderson,
On Mon, Dec 16, 2013 at 06:39:28AM -0400, Anderson Lizardo wrote:
> Hi Andrei,
>
> On Mon, Dec 16, 2013 at 4:57 AM, Andrei Emeltchenko
> <Andrei.Emeltchenko.news@gmail.com> wrote:
> > --- a/tools/l2cap-tester.c
> > +++ b/tools/l2cap-tester.c
> > @@ -489,15 +489,14 @@ static int create_l2cap_sock(struct test_data *data, uint16_t psm)
> > {
> > const uint8_t *master_bdaddr;
> > struct sockaddr_l2 addr;
> > - int sk, err;
> > + int sk;
> >
> > sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET | SOCK_NONBLOCK,
> > BTPROTO_L2CAP);
> > if (sk < 0) {
> > - err = -errno;
> > tester_warn("Can't create socket: %s (%d)", strerror(errno),
> > errno);
> > - return err;
> > + return -errno;
> > }
> >
> > master_bdaddr = hciemu_get_master_bdaddr(data->hciemu);
> > @@ -517,11 +516,10 @@ static int create_l2cap_sock(struct test_data *data, uint16_t psm)
> > addr.l2_bdaddr_type = BDADDR_BREDR;
> >
> > if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
> > - err = -errno;
> > tester_warn("Can't bind socket: %s (%d)", strerror(errno),
> > errno);
> > close(sk);
> > - return err;
> > + return -errno;
>
> This is not a good idea because close() will overwrite the original
> error if it fails as well. The previous situation is also valid
> because tester_warn() may call library functions that set errno.
Yes, though the return value is not used at all, we may just return -1.
Best regards
Andrei Emeltchenko
^ permalink raw reply
* [PATCH v2 BlueZ] android: Add initial Android Bluetooth Audio protocol API doc
From: Luiz Augusto von Dentz @ 2013-12-16 13:08 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This IPC is used to communicate Android BlueZ daemon and AudioFlinger
plugin.
---
v2: Rework IPC commands to match Android Audio HAL
android/Makefile.am | 3 +-
android/audio-ipc-api.txt | 85 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 87 insertions(+), 1 deletion(-)
create mode 100644 android/audio-ipc-api.txt
diff --git a/android/Makefile.am b/android/Makefile.am
index 79f30d7..ac00bb2 100644
--- a/android/Makefile.am
+++ b/android/Makefile.am
@@ -111,4 +111,5 @@ EXTRA_DIST += android/Android.mk android/hal-ipc-api.txt android/README \
android/pixit-gap.txt android/pixit-hid.txt \
android/pixit-opp.txt android/pixit-pan.txt \
android/pixit-pbap.txt android/pts-gap.txt android/pts-hid.txt \
- android/pts-opp.txt android/pts-pbap.txt
+ android/pts-opp.txt android/pts-pbap.txt \
+ android/audio-ipc-api.txt
diff --git a/android/audio-ipc-api.txt b/android/audio-ipc-api.txt
new file mode 100644
index 0000000..e9a2136
--- /dev/null
+++ b/android/audio-ipc-api.txt
@@ -0,0 +1,85 @@
+Bluetooth Audio Plugin
+======================
+
+The audio plugin happen to be in a different socket but all the rules for
+HAL socket apply here as well, the abstract socket name is
+"\0bluez_audio_socket" (tentative):
+
+ .--Android--. .---Audio---.
+ | daemon | | Plugin |
+ | | Command | |
+ | | <-------------------------- | |
+ | | | |
+ | | --------------------------> | |
+ | | Response | |
+ | | | |
+ | | | |
+ | | | |
+ '-----------' '-----------'
+
+
+ Audio HAL Daemon
+ ----------------------------------------------------
+
+ call dev->open() --> command 0x01
+ return dev->open() <-- response 0x01
+
+ call dev->open_output_stream() --> command 0x03
+ return dev->open_output_stream() <-- response 0x03
+
+ call stream_in->read() --> command 0x05
+ return stream_in->read() <-- response 0x05
+
+ call stream_in->common.standby() --> command 0x06
+ return stream_in->common.standby() <-- response 0x06
+
+ call dev->close_output_stream() --> command 0x04
+ return dev->close_output_stream() <-- response 0x04
+
+ call dev->close() --> command 0x02
+ return dev->close() <-- response 0x02
+
+Identifier: "audio" (BT_AUDIO_ID)
+
+ Opcode 0x00 - Error response
+
+ Response parameters: Status (1 octet)
+
+ Opcode 0x01 - Open Audio Endpoint commmand
+
+ Command parameters: Service UUID (16 octets)
+ Codec ID (1 octets)
+ Codec capabilities length (1 octets)
+ Codec capabilities (variable)
+ Number of codec presets (1 octets)
+ Codec preset # length (1 octets)
+ Codec preset # configuration (variable)
+ ...
+ Response parameters: Endpoint ID (1 octets)
+
+ Opcode 0x02 - Close Audio Endpoint command
+
+ Command parameters: Endpoint ID (1 octets)
+ Response parameters: <none>
+
+ Opcode 0x03 - Open Stream command
+
+ Command parameters: Endpoint ID (1 octets)
+ Response parameters: Codec configuration length (1 octets)
+ Codec configuration (1 octets)
+ File descriptor (inline)
+
+ Opcode 0x04 - Close Stream command
+
+ Command parameters: Endpoint ID (1 octets)
+ Response parameters: <none>
+
+ Opcode 0x05 - Resume Stream command
+
+ Command parameters: Endpoint ID (1 octets)
+ Response parameters: <none>
+
+ Opcode 0x06 - Suspend Stream command
+
+ Command parameters: Endpoint ID (1 octets)
+ Response parameters: <none>
--
1.8.3.1
^ permalink raw reply related
* [PATCH 1/2] bluetooth/hidhost: Fix using feature event as output event
From: Szymon Janc @ 2013-12-16 14:37 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
Rename handle_uhid_event to handle_uhid_output and make it handle only
output events.
---
android/hidhost.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/android/hidhost.c b/android/hidhost.c
index 8bfdfed..0e0391a 100644
--- a/android/hidhost.c
+++ b/android/hidhost.c
@@ -153,7 +153,8 @@ static void hid_device_free(struct hid_device *dev)
g_free(dev);
}
-static void handle_uhid_event(struct hid_device *dev, struct uhid_event *ev)
+static void handle_uhid_output(struct hid_device *dev,
+ struct uhid_output_req *output)
{
int fd, i;
uint8_t *req = NULL;
@@ -162,15 +163,14 @@ static void handle_uhid_event(struct hid_device *dev, struct uhid_event *ev)
if (!(dev->ctrl_io))
return;
- req_size = 1 + (ev->u.output.size / 2);
+ req_size = 1 + (output->size / 2);
req = g_try_malloc0(req_size);
if (!req)
return;
- req[0] = HID_MSG_SET_REPORT | ev->u.output.rtype;
+ req[0] = HID_MSG_SET_REPORT | output->rtype;
for (i = 0; i < (req_size - 1); i++)
- sscanf((char *) &(ev->u.output.data)[i * 2],
- "%hhx", &req[1 + i]);
+ sscanf((char *) &(output->data)[i * 2], "%hhx", &req[1 + i]);
fd = g_io_channel_unix_get_fd(dev->ctrl_io);
@@ -224,8 +224,10 @@ static gboolean uhid_event_cb(GIOChannel *io, GIOCondition cond,
* asleep This is optional, though. */
break;
case UHID_OUTPUT:
+ handle_uhid_output(dev, &ev.u.output);
+ break;
case UHID_FEATURE:
- handle_uhid_event(dev, &ev);
+ /* TODO */
break;
case UHID_OUTPUT_EV:
/* This is only sent by kernels prior to linux-3.11. It
--
1.8.3.2
^ permalink raw reply related
* [PATCH 2/2] android/hidhost: Simplify handle_uhid_output
From: Szymon Janc @ 2013-12-16 14:37 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
In-Reply-To: <1387204652-14850-1-git-send-email-szymon.janc@tieto.com>
Make it use VLA for req buffer. This makes function simpler and also
fix cutting req to 255 bytes (req_len was uint8_t)
---
android/hidhost.c | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/android/hidhost.c b/android/hidhost.c
index 0e0391a..76322af 100644
--- a/android/hidhost.c
+++ b/android/hidhost.c
@@ -156,29 +156,22 @@ static void hid_device_free(struct hid_device *dev)
static void handle_uhid_output(struct hid_device *dev,
struct uhid_output_req *output)
{
- int fd, i;
- uint8_t *req = NULL;
- uint8_t req_size = 0;
+ int fd;
+ unsigned int i;
+ uint8_t req[1 + (output->size / 2)];
if (!(dev->ctrl_io))
return;
- req_size = 1 + (output->size / 2);
- req = g_try_malloc0(req_size);
- if (!req)
- return;
-
req[0] = HID_MSG_SET_REPORT | output->rtype;
- for (i = 0; i < (req_size - 1); i++)
+ for (i = 0; i < (sizeof(req) - 1); i++)
sscanf((char *) &(output->data)[i * 2], "%hhx", &req[1 + i]);
fd = g_io_channel_unix_get_fd(dev->ctrl_io);
- if (write(fd, req, req_size) < 0)
+ if (write(fd, req, sizeof(req)) < 0)
error("error writing set_report: %s (%d)",
strerror(errno), errno);
-
- g_free(req);
}
static gboolean uhid_event_cb(GIOChannel *io, GIOCondition cond,
--
1.8.3.2
^ permalink raw reply related
* [PATCH 1/2] android/tester: Add missing break
From: Andrei Emeltchenko @ 2013-12-16 14:52 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
android/android-tester.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/android/android-tester.c b/android/android-tester.c
index eb938d0..2a8c8d0 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
@@ -487,6 +487,7 @@ static void adapter_state_changed_cb(bt_state_t state)
tester_setup_complete();
else
tester_setup_failed();
+ break;
default:
break;
}
--
1.8.3.2
^ permalink raw reply related
* [PATCH 2/2] android/tester: Enable bthost after device is enabled
From: Andrei Emeltchenko @ 2013-12-16 14:52 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1387205568-14461-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
This puts bthost to connectible mode allowing us to use powered setup
for connect to emulated device.
---
android/android-tester.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/android/android-tester.c b/android/android-tester.c
index 2a8c8d0..d0d3690 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
@@ -33,10 +33,15 @@
#include "src/shared/mgmt.h"
#include "src/shared/hciemu.h"
+#include "emulator/bthost.h"
+#include "monitor/bt.h"
+
#include <hardware/hardware.h>
#include <hardware/bluetooth.h>
#include <hardware/bt_sock.h>
+#include "utils.h"
+
#define adapter_props adapter_prop_bdaddr, adapter_prop_bdname, \
adapter_prop_uuids, adapter_prop_cod, \
adapter_prop_type, adapter_prop_scan_mode, \
@@ -463,6 +468,42 @@ failed:
close(fd);
}
+static void client_connectable_complete(uint16_t opcode, uint8_t status,
+ const void *param, uint8_t len,
+ void *user_data)
+{
+ switch (opcode) {
+ case BT_HCI_CMD_WRITE_SCAN_ENABLE:
+ case BT_HCI_CMD_LE_SET_ADV_ENABLE:
+ break;
+ default:
+ return;
+ }
+
+ tester_print("Client set connectable status 0x%02x", status);
+
+ if (status)
+ tester_setup_failed();
+ else
+ tester_setup_complete();
+}
+
+static void setup_powered_client(void)
+{
+ struct test_data *data = tester_get_data();
+ struct bthost *bthost;
+
+ tester_print("Controller powered on");
+
+ bthost = hciemu_client_get_host(data->hciemu);
+ bthost_set_cmd_complete_cb(bthost, client_connectable_complete, data);
+
+ if (data->hciemu_type == HCIEMU_TYPE_LE)
+ bthost_set_adv_enable(bthost, 0x01);
+ else
+ bthost_write_scan_enable(bthost, 0x03);
+}
+
static void adapter_state_changed_cb(bt_state_t state)
{
enum hal_bluetooth_callbacks_id hal_cb;
@@ -484,7 +525,7 @@ static void adapter_state_changed_cb(bt_state_t state)
break;
case adapter_test_setup_mode:
if (state == BT_STATE_ON)
- tester_setup_complete();
+ setup_powered_client();
else
tester_setup_failed();
break;
--
1.8.3.2
^ permalink raw reply related
* Re: [PATCH 2/2] android/hidhost: Simplify handle_uhid_output
From: Luiz Augusto von Dentz @ 2013-12-16 15:19 UTC (permalink / raw)
To: Szymon Janc; +Cc: linux-bluetooth@vger.kernel.org
In-Reply-To: <1387204652-14850-2-git-send-email-szymon.janc@tieto.com>
Hi Szymon,
On Mon, Dec 16, 2013 at 4:37 PM, Szymon Janc <szymon.janc@tieto.com> wrote:
> Make it use VLA for req buffer. This makes function simpler and also
> fix cutting req to 255 bytes (req_len was uint8_t)
> ---
> android/hidhost.c | 17 +++++------------
> 1 file changed, 5 insertions(+), 12 deletions(-)
>
> diff --git a/android/hidhost.c b/android/hidhost.c
> index 0e0391a..76322af 100644
> --- a/android/hidhost.c
> +++ b/android/hidhost.c
> @@ -156,29 +156,22 @@ static void hid_device_free(struct hid_device *dev)
> static void handle_uhid_output(struct hid_device *dev,
> struct uhid_output_req *output)
> {
> - int fd, i;
> - uint8_t *req = NULL;
> - uint8_t req_size = 0;
> + int fd;
> + unsigned int i;
> + uint8_t req[1 + (output->size / 2)];
Im not a fan of VLA and Ive seem even some static analyzer that would
warn about its use without first checking > 0 and have a check of
upper bond limit, so perhaps just having it set to UHID_DATA_MAX or
dynamically allocate a buffer to match the output MTU size of the
control channel would better imo.
--
Luiz Augusto von Dentz
^ permalink raw reply
* RFCOMM connection failing
From: Patrick Valsecchi @ 2013-12-16 15:55 UTC (permalink / raw)
To: linux-bluetooth
Hi,
I'm trying to connect my PC:
Linux ... 3.11.0-14-generic #21-Ubuntu SMP ... x86_64 x86_64 x86_64
GNU/Linux
0a5c:2198 Broadcom Corp. Bluetooth 3.0 Device
To connect with my bluetooth dive computer:
Shearwater Petrel
It fails with a "Transport endpoint is not connected (107)" most of the
time or go further but seem to have corrupted RFCOMM payload.
If I pass the USB device to a W7 VM (virtualbox) and try from them, the
communication works like charm.
So I went ahead and sniffed the USB communication in both cases using
wireshark. The two dumps () can be found here (UsbDumpFrom*.pcapng, can
be open using wireshark):
https://cloud.thus.ch/public.php?service=files&t=de2eabf30c82efa08cf546ff5045e585
Basically the Linux one is just stopping at frame 203 where it sends a
RFCOMM SABM, gets the answer and reports an error to the user. The
windows dump show the same RFCOMM SABM command in frame 191 and gets the
same answer but continues and everything works.
On IRC aholler told me you guys would prefer to get a btmon dump with
bluez v5. So I went ahead, installed bluez 5.12 and generated a dump
(yes, the comm still fails the same way) that you can find in the same
location as the dumps.
I'm stuck there. Can somebody help me go further?
Thanks
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox