From: Szymon Janc <szymon.janc@tieto.com>
To: Jakub Tyszkowski <jakub.tyszkowski@tieto.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH 06/11] android/tester: Add case for GATT prep. and exec. write on ccc descr.
Date: Tue, 13 Jan 2015 14:48:48 +0100 [thread overview]
Message-ID: <2163224.GmdIK3XLVT@uw000953> (raw)
In-Reply-To: <1420708669-32600-6-git-send-email-jakub.tyszkowski@tieto.com>
Hi Jakub,
On Thursday 08 of January 2015 10:17:44 Jakub Tyszkowski wrote:
> We should support prepare and execute write also on Service Changed
> characteristic.
> ---
> android/tester-gatt.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++
> android/tester-main.c | 2 ++
> android/tester-main.h | 2 ++
> 3 files changed, 66 insertions(+)
>
> diff --git a/android/tester-gatt.c b/android/tester-gatt.c
> index 23c6609..ab8497b 100644
> --- a/android/tester-gatt.c
> +++ b/android/tester-gatt.c
> @@ -34,6 +34,10 @@
> #define L2CAP_ATT_WRITE_RSP 0x13
> #define L2CAP_ATT_HANDLE_VALUE_NOTIFY 0x1b
> #define L2CAP_ATT_HANDLE_VALUE_IND 0x1d
> +#define L2CAP_ATT_PREP_WRITE_REQ 0x16
> +#define L2CAP_ATT_PREP_WRITE_RSP 0x17
> +#define L2CAP_ATT_EXEC_WRITE_REQ 0x18
> +#define L2CAP_ATT_EXEC_WRITE_RSP 0x19
>
> #define GATT_STATUS_SUCCESS 0x00000000
> #define GATT_STATUS_FAILURE 0x00000101
> @@ -1083,10 +1087,16 @@ static struct iovec send_notification_1[] = {
> /* att commands define raw pdus */
> static struct iovec att_read_req_op_v = raw_pdu(L2CAP_ATT_READ_REQ);
> static struct iovec att_write_req_op_v = raw_pdu(L2CAP_ATT_WRITE_REQ);
> +static struct iovec att_prep_write_req_op_v = raw_pdu(L2CAP_ATT_PREP_WRITE_REQ);
> +static struct iovec att_exec_write_req_op_v = raw_pdu(L2CAP_ATT_EXEC_WRITE_REQ);
>
> static struct iovec svc_change_ccc_handle_v = raw_pdu(0x1a, 0x00);
> static struct iovec svc_change_ccc_value_v = raw_pdu(0x00, 0x01);
>
> +static struct iovec svc_change_ccc_prep_value_v = raw_pdu(0x00, 0x00,
> + 0x00, 0x01);
> +static struct iovec att_prep_write_exec_v = raw_pdu(0x01);
> +
> static void gatt_client_register_action(void)
> {
> struct test_data *data = tester_get_data();
> @@ -1618,6 +1628,20 @@ static void gatt_cid_hook_cb(const void *data, uint16_t len, void *user_data)
>
> schedule_callback_verification(step);
> break;
> + case L2CAP_ATT_PREP_WRITE_RSP:
> + step = g_new0(struct step, 1);
> +
> + step->callback = CB_EMU_PREP_WRITE_RESPONSE;
> +
> + schedule_callback_verification(step);
> + break;
> + case L2CAP_ATT_EXEC_WRITE_RSP:
> + step = g_new0(struct step, 1);
> +
> + step->callback = CB_EMU_EXEC_WRITE_RESPONSE;
> +
> + schedule_callback_verification(step);
> + break;
> default:
> if (!gatt_pdu || !gatt_pdu->iov_base) {
> tester_print("Unknown ATT packet.");
> @@ -3412,6 +3436,44 @@ static struct test_case test_cases[] = {
> ACTION_SUCCESS(bluetooth_disable_action, NULL),
> CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
> ),
> +TEST_CASE_BREDRLE("Gatt Server - Srvc change prep/exec write success",
> + ACTION_SUCCESS(bluetooth_enable_action, NULL),
> + CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
> + ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
> + ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
> + ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
> + ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
> + CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
> + ACTION_SUCCESS(bt_start_discovery_action, NULL),
> + CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
> + BT_DISCOVERY_STARTED),
> + CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
> + ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
> + ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
> + CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
> + prop_emu_remotes_default_set,
> + CONN1_ID, APP1_ID),
> + /* For CCC we need to be bonded */
> + ACTION_SUCCESS(bt_create_bond_action,
> + &prop_test_remote_ble_bdaddr_req),
> + CALLBACK_BOND_STATE(BT_BOND_STATE_BONDED,
> + &prop_emu_remotes_default_set[0], 1),
> + /* Write and receive confirmation */
> + PROCESS_DATA(GATT_STATUS_SUCCESS,
> + gatt_remote_send_raw_pdu_action,
> + &att_prep_write_req_op_v,
> + &svc_change_ccc_handle_v,
> + &svc_change_ccc_prep_value_v),
> + CALLBACK(CB_EMU_PREP_WRITE_RESPONSE),
> + PROCESS_DATA(GATT_STATUS_SUCCESS,
> + gatt_remote_send_raw_pdu_action,
> + &att_exec_write_req_op_v, &att_prep_write_exec_v,
Line over 80 characters.
> + NULL),
> + CALLBACK(CB_EMU_EXEC_WRITE_RESPONSE),
> + /* Shutdown */
> + ACTION_SUCCESS(bluetooth_disable_action, NULL),
> + CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
> + ),
> };
>
> struct queue *get_gatt_tests(void)
> diff --git a/android/tester-main.c b/android/tester-main.c
> index 336a9a8..1d61cfb 100644
> --- a/android/tester-main.c
> +++ b/android/tester-main.c
> @@ -134,6 +134,8 @@ static struct {
> DBG_CB(CB_EMU_VALUE_NOTIFICATION),
> DBG_CB(CB_EMU_READ_RESPONSE),
> DBG_CB(CB_EMU_WRITE_RESPONSE),
> + DBG_CB(CB_EMU_PREP_WRITE_RESPONSE),
> + DBG_CB(CB_EMU_EXEC_WRITE_RESPONSE),
> };
>
> static gboolean check_callbacks_called(gpointer user_data)
> diff --git a/android/tester-main.h b/android/tester-main.h
> index e35feec..ec9a20f 100644
> --- a/android/tester-main.h
> +++ b/android/tester-main.h
> @@ -548,6 +548,8 @@ typedef enum {
> CB_EMU_VALUE_NOTIFICATION,
> CB_EMU_READ_RESPONSE,
> CB_EMU_WRITE_RESPONSE,
> + CB_EMU_PREP_WRITE_RESPONSE,
> + CB_EMU_EXEC_WRITE_RESPONSE,
> } expected_bt_callback_t;
>
> struct test_data {
>
--
Best regards,
Szymon Janc
next prev parent reply other threads:[~2015-01-13 13:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-08 9:17 [PATCH 01/11] android/tester: Use uint16_t for handles Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 02/11] android/tester: Add macro improving pdu send procedure Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 03/11] android/tester: Support remote sending pdu from fragments Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 04/11] android/tester: Use multiple iovecs instead of one large buffer Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 05/11] android/tester: Add case for GATT embeded attributes writes Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 06/11] android/tester: Add case for GATT prep. and exec. write on ccc descr Jakub Tyszkowski
2015-01-13 13:48 ` Szymon Janc [this message]
2015-01-08 9:17 ` [PATCH 07/11] android/gatt: Fix not handling service change ccc write execute Jakub Tyszkowski
2015-01-13 13:48 ` Szymon Janc
2015-01-08 9:17 ` [PATCH 08/11] android/tester: Add GATT Server test for invalid value length for ccc Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 09/11] android/tester: Add case for error passing in GATT server responses Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 10/11] android/tester: Add GATT case for Svc. change invalid offset write Jakub Tyszkowski
2015-01-08 9:17 ` [PATCH 11/11] android/gatt: Verify offset on srvc change ccc write Jakub Tyszkowski
2015-01-13 13:48 ` Szymon Janc
2015-01-13 13:48 ` [PATCH 01/11] android/tester: Use uint16_t for handles Szymon Janc
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2163224.GmdIK3XLVT@uw000953 \
--to=szymon.janc@tieto.com \
--cc=jakub.tyszkowski@tieto.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox