Linux bluetooth development
 help / color / mirror / Atom feed
* [PATCHv2 00/15] android/tester: GATT Client test cases
@ 2014-09-24 11:37 Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 01/15] android/tester: Fix condition check Marcin Kraglak
                   ` (15 more replies)
  0 siblings, 16 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

This patch set contains test cases for reading/writing characteristics
and descriptors. There are also minor fixes for android-tester
and android/gatt.
Few test cases were already send to ML, and now they are rebased.

BR
Marcin

Marcin Kraglak (15):
  android/tester: Fix condition check
  android/tester: Change function names
  android/tester: Make local variable static
  android/tester: Add support for GATT Client Read/Write callbacks
  android/tester: Add GATT Characteristic Read Success
  android/tester: Add GATT Characteristic Read Ins. Auth.
  android/tester: Add GATT Characteristic Read Wrong Params
  android/tester: Add GATT Descriptor Read Success
  android/tester: Add GATT Descriptor Read Ins. Auth.
  android/tester: Add GATT Descriptor Read Wrong params
  android/tester: Add GATT Characteristic Write Cmd Success
  android/tester: Add GATT Characteristic Write Req Success
  android/tester: Add GATT Write Characteristic Ins. Auth.
  android/gatt: Set proper status of write_data
  android/tester: Add GATT Write Characteristic Wrong params

 android/gatt.c        |   1 +
 android/tester-gatt.c | 747 +++++++++++++++++++++++++++++++++++++++++++++++++-
 android/tester-main.c |  84 +++++-
 android/tester-main.h |  31 +++
 4 files changed, 848 insertions(+), 15 deletions(-)

-- 
1.9.3


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCHv2 01/15] android/tester: Fix condition check
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-25  9:11   ` Szymon Janc
  2014-09-24 11:37 ` [PATCHv2 02/15] android/tester: Change function names Marcin Kraglak
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

It may cause NULL pointer dereference.
---
 android/tester-gatt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 42f3733..f30d0eb 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -545,7 +545,7 @@ static void gatt_cid_hook_cb(const void *data, uint16_t len, void *user_data)
 		}
 		queue_pop_head(t_data->pdus);
 		gatt_pdu = queue_pop_head(t_data->pdus);
-		if (!gatt_pdu->data)
+		if (!gatt_pdu)
 			break;
 
 		bthost_send_cid(bthost, cid_data->handle, cid_data->cid,
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 02/15] android/tester: Change function names
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 01/15] android/tester: Fix condition check Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 03/15] android/tester: Make local variable static Marcin Kraglak
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Functions which refers to specific actions should have "action"
suffix.
---
 android/tester-gatt.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index f30d0eb..7997d8a 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -470,7 +470,7 @@ static void gatt_client_get_characteristic_action(void)
 	schedule_action_verification(step);
 }
 
-static void gatt_client_get_descriptor(void)
+static void gatt_client_get_descriptor_action(void)
 {
 	struct test_data *data = tester_get_data();
 	struct step *current_data_step = queue_peek_head(data->steps);
@@ -487,7 +487,7 @@ static void gatt_client_get_descriptor(void)
 	schedule_action_verification(step);
 }
 
-static void gatt_client_get_included(void)
+static void gatt_client_get_included_action(void)
 {
 	struct test_data *data = tester_get_data();
 	struct step *current_data_step = queue_peek_head(data->steps);
@@ -946,7 +946,8 @@ static struct test_case test_cases[] = {
 							&get_char_data_1),
 		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
 				CONN1_ID, &service_1, &characteristic_1, 4),
-		ACTION_SUCCESS(gatt_client_get_descriptor, &get_desc_data_1),
+		ACTION_SUCCESS(gatt_client_get_descriptor_action,
+							&get_desc_data_1),
 		CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
 				&service_1, &characteristic_1, &desc_1),
 		ACTION_SUCCESS(bluetooth_disable_action, NULL),
@@ -977,11 +978,13 @@ static struct test_case test_cases[] = {
 		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
 							CONN1_ID, &service_1,
 							&characteristic_1, 4),
-		ACTION_SUCCESS(gatt_client_get_descriptor, &get_desc_data_1),
+		ACTION_SUCCESS(gatt_client_get_descriptor_action,
+							&get_desc_data_1),
 		CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
 						&service_1, &characteristic_1,
 						&desc_1),
-		ACTION_SUCCESS(gatt_client_get_descriptor, &get_desc_data_2),
+		ACTION_SUCCESS(gatt_client_get_descriptor_action,
+							&get_desc_data_2),
 		CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
 						&service_1, &characteristic_1,
 						&desc_2),
@@ -1012,7 +1015,8 @@ static struct test_case test_cases[] = {
 							&get_char_data_1),
 		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
 				CONN1_ID, &service_1, &characteristic_1, 4),
-		ACTION_SUCCESS(gatt_client_get_descriptor, &get_desc_data_1),
+		ACTION_SUCCESS(gatt_client_get_descriptor_action,
+							&get_desc_data_1),
 		CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_FAILURE, CONN1_ID,
 				&service_1, &characteristic_1, NULL),
 		ACTION_SUCCESS(bluetooth_disable_action, NULL),
@@ -1038,7 +1042,8 @@ static struct test_case test_cases[] = {
 						CONN1_ID, CLIENT1_ID),
 		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
 		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
-		ACTION_SUCCESS(gatt_client_get_included, &get_incl_data_1),
+		ACTION_SUCCESS(gatt_client_get_included_action,
+							&get_incl_data_1),
 		CALLBACK_GATTC_GET_INCLUDED(GATT_STATUS_SUCCESS, CONN1_ID,
 						&service_1, &included_1),
 		ACTION_SUCCESS(bluetooth_disable_action, NULL),
@@ -1064,7 +1069,8 @@ static struct test_case test_cases[] = {
 						CONN1_ID, CLIENT1_ID),
 		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
 		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
-		ACTION_SUCCESS(gatt_client_get_included, &get_incl_data_1),
+		ACTION_SUCCESS(gatt_client_get_included_action,
+							&get_incl_data_1),
 		CALLBACK_GATTC_GET_INCLUDED(GATT_STATUS_SUCCESS, CONN1_ID,
 						&service_1, &included_2),
 		ACTION_SUCCESS(bluetooth_disable_action, NULL),
@@ -1090,7 +1096,8 @@ static struct test_case test_cases[] = {
 						CONN1_ID, CLIENT1_ID),
 		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
 		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
-		ACTION_SUCCESS(gatt_client_get_included, &get_incl_data_1),
+		ACTION_SUCCESS(gatt_client_get_included_action,
+							&get_incl_data_1),
 		CALLBACK_GATTC_GET_INCLUDED(GATT_STATUS_FAILURE, CONN1_ID,
 							&service_1, NULL),
 		ACTION_SUCCESS(bluetooth_disable_action, NULL),
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 03/15] android/tester: Make local variable static
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 01/15] android/tester: Fix condition check Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 02/15] android/tester: Change function names Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 04/15] android/tester: Add support for GATT Client Read/Write callbacks Marcin Kraglak
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

This variable should be defined as static.
---
 android/tester-gatt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 7997d8a..7a2f4c8 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -219,7 +219,7 @@ static struct get_desc_data get_desc_data_2 = {
 	.desc = &desc_1,
 };
 
-struct get_incl_data get_incl_data_1 = {
+static struct get_incl_data get_incl_data_1 = {
 	.conn_id = CONN1_ID,
 	.service = &service_1
 };
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 04/15] android/tester: Add support for GATT Client Read/Write callbacks
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (2 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 03/15] android/tester: Make local variable static Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 05/15] android/tester: Add GATT Characteristic Read Success Marcin Kraglak
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

It will service GATT Client read/write callbacks.
---
 android/tester-main.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++---
 android/tester-main.h | 31 +++++++++++++++++++
 2 files changed, 111 insertions(+), 4 deletions(-)

diff --git a/android/tester-main.c b/android/tester-main.c
index 5f0563d..b65029a 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -595,6 +595,24 @@ static bool match_data(struct step *step)
 				return false;
 			}
 		}
+
+		if (exp->callback_result.read_params) {
+			if (memcmp(step->callback_result.read_params,
+					exp->callback_result.read_params,
+					sizeof(btgatt_read_params_t))) {
+				tester_debug("Gatt read_param doesn't match");
+				return false;
+			}
+		}
+
+		if (exp->callback_result.write_params) {
+			if (memcmp(step->callback_result.write_params,
+					exp->callback_result.write_params,
+					sizeof(btgatt_write_params_t))) {
+				tester_debug("Gatt write_param doesn't match");
+				return false;
+			}
+		}
 	}
 
 	return true;
@@ -691,6 +709,12 @@ static void destroy_callback_step(void *data)
 	if (step->callback_result.included)
 		free(step->callback_result.included);
 
+	if (step->callback_result.read_params)
+		free(step->callback_result.read_params);
+
+	if (step->callback_result.write_params)
+		free(step->callback_result.write_params);
+
 	g_free(step);
 	g_atomic_int_dec_and_test(&scheduled_cbacks_num);
 }
@@ -1179,6 +1203,58 @@ static void gattc_get_included_service_cb(int conn_id, int status,
 	schedule_callback_call(step);
 }
 
+static void gattc_read_characteristic_cb(int conn_id, int status,
+						btgatt_read_params_t *p_data)
+{
+	struct step *step = g_new0(struct step, 1);
+
+	step->callback = CB_GATTC_READ_CHARACTERISTIC;
+	step->callback_result.status = status;
+	step->callback_result.conn_id = conn_id;
+	step->callback_result.read_params = g_memdup(p_data, sizeof(*p_data));
+
+	schedule_callback_call(step);
+}
+
+static void gattc_read_descriptor_cb(int conn_id, int status,
+						btgatt_read_params_t *p_data)
+{
+	struct step *step = g_new0(struct step, 1);
+
+	step->callback = CB_GATTC_READ_DESCRIPTOR;
+	step->callback_result.status = status;
+	step->callback_result.conn_id = conn_id;
+	step->callback_result.read_params = g_memdup(p_data, sizeof(*p_data));
+
+	schedule_callback_call(step);
+}
+
+static void gattc_write_characteristic_cb(int conn_id, int status,
+						btgatt_write_params_t *p_data)
+{
+	struct step *step = g_new0(struct step, 1);
+
+	step->callback = CB_GATTC_WRITE_CHARACTERISTIC;
+	step->callback_result.status = status;
+	step->callback_result.conn_id = conn_id;
+	step->callback_result.write_params = g_memdup(p_data, sizeof(*p_data));
+
+	schedule_callback_call(step);
+}
+
+static void gattc_write_descriptor_cb(int conn_id, int status,
+						btgatt_write_params_t *p_data)
+{
+	struct step *step = g_new0(struct step, 1);
+
+	step->callback = CB_GATTC_WRITE_DESCRIPTOR;
+	step->callback_result.status = status;
+	step->callback_result.conn_id = conn_id;
+	step->callback_result.write_params = g_memdup(p_data, sizeof(*p_data));
+
+	schedule_callback_call(step);
+}
+
 static void pan_control_state_cb(btpan_control_state_t state,
 					bt_status_t error, int local_role,
 							const char *ifname)
@@ -1290,10 +1366,10 @@ static const btgatt_client_callbacks_t btgatt_client_callbacks = {
 	.get_included_service_cb = gattc_get_included_service_cb,
 	.register_for_notification_cb = NULL,
 	.notify_cb = NULL,
-	.read_characteristic_cb = NULL,
-	.write_characteristic_cb = NULL,
-	.read_descriptor_cb = NULL,
-	.write_descriptor_cb = NULL,
+	.read_characteristic_cb = gattc_read_characteristic_cb,
+	.write_characteristic_cb = gattc_write_characteristic_cb,
+	.read_descriptor_cb = gattc_read_descriptor_cb,
+	.write_descriptor_cb = gattc_write_descriptor_cb,
 	.execute_write_cb = NULL,
 	.read_remote_rssi_cb = NULL,
 	.listen_cb = gattc_listen_cb
diff --git a/android/tester-main.h b/android/tester-main.h
index 6f59330..8a816ba 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
@@ -174,6 +174,35 @@
 		.callback_result.included = cb_incl, \
 	}
 
+#define CALLBACK_GATTC_READ_CHARACTERISTIC(cb_res, cb_conn_id, cb_read_data) { \
+		.callback = CB_GATTC_READ_CHARACTERISTIC, \
+		.callback_result.conn_id = cb_conn_id, \
+		.callback_result.status = cb_res, \
+		.callback_result.read_params = cb_read_data, \
+	}
+
+#define CALLBACK_GATTC_READ_DESCRIPTOR(cb_res, cb_conn_id, cb_read_data) { \
+		.callback = CB_GATTC_READ_DESCRIPTOR, \
+		.callback_result.conn_id = cb_conn_id, \
+		.callback_result.status = cb_res, \
+		.callback_result.read_params = cb_read_data, \
+	}
+
+#define CALLBACK_GATTC_WRITE_DESCRIPTOR(cb_res, cb_conn_id, cb_write_data) { \
+		.callback = CB_GATTC_WRITE_DESCRIPTOR, \
+		.callback_result.conn_id = cb_conn_id, \
+		.callback_result.status = cb_res, \
+		.callback_result.write_params = cb_write_data, \
+	}
+
+#define CALLBACK_GATTC_WRITE_CHARACTERISTIC(cb_res, cb_conn_id, \
+							cb_write_data) { \
+		.callback = CB_GATTC_WRITE_CHARACTERISTIC, \
+		.callback_result.conn_id = cb_conn_id, \
+		.callback_result.status = cb_res, \
+		.callback_result.write_params = cb_write_data, \
+	}
+
 #define CALLBACK_GATTC_DISCONNECT(cb_res, cb_prop, cb_conn_id, cb_client_id) { \
 		.callback = CB_GATTC_CLOSE, \
 		.callback_result.status = cb_res, \
@@ -417,6 +446,8 @@ struct bt_callback_data {
 	btgatt_gatt_id_t *characteristic;
 	btgatt_gatt_id_t *descriptor;
 	btgatt_srvc_id_t *included;
+	btgatt_read_params_t *read_params;
+	btgatt_write_params_t *write_params;
 	int char_prop;
 
 	btpan_control_state_t ctrl_state;
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 05/15] android/tester: Add GATT Characteristic Read Success
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (3 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 04/15] android/tester: Add support for GATT Client Read/Write callbacks Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 06/15] android/tester: Add GATT Characteristic Read Ins. Auth Marcin Kraglak
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test Characteristic Read request.
---
 android/tester-gatt.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 136 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 7a2f4c8..7f761c2 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -91,6 +91,13 @@ struct get_incl_data {
 	btgatt_srvc_id_t *start_service;
 };
 
+struct read_char_data {
+	const int conn_id;
+	btgatt_srvc_id_t *service;
+	btgatt_gatt_id_t *characteristic;
+	int auth_req;
+};
+
 static bt_uuid_t client2_app_uuid = {
 	.uu = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
 				0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 },
@@ -196,6 +203,8 @@ static btgatt_gatt_id_t desc_2 = {
 			0x00, 0x10, 0x00, 0x00,  0x01, 0x29, 0x00, 0x00}
 };
 
+static btgatt_read_params_t read_params_1;
+
 static struct get_char_data get_char_data_1 = {
 	.conn_id = CONN1_ID,
 	.service = &service_1
@@ -219,11 +228,39 @@ static struct get_desc_data get_desc_data_2 = {
 	.desc = &desc_1,
 };
 
+static struct read_char_data read_char_data_1 = {
+	.conn_id = CONN1_ID,
+	.service = &service_1,
+	.characteristic = &characteristic_1,
+};
+
 static struct get_incl_data get_incl_data_1 = {
 	.conn_id = CONN1_ID,
 	.service = &service_1
 };
 
+struct set_read_params {
+	btgatt_read_params_t *params;
+	btgatt_srvc_id_t *srvc_id;
+	btgatt_gatt_id_t *char_id;
+	btgatt_gatt_id_t *descr_id;
+	uint8_t *value;
+	uint16_t len;
+	uint16_t value_type;
+	uint8_t status;
+};
+
+static uint8_t value_1[] = {0x01};
+
+static struct set_read_params set_read_param_1 = {
+	.params = &read_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.value = value_1,
+	.len = 1,
+	.status = BT_STATUS_SUCCESS
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -343,6 +380,20 @@ static struct pdu get_included_3[] = {
 	end_pdu
 };
 
+static struct pdu read_characteristic_1[] = {
+	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
+	raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x01, 0x11, 0x11, 0x00, 0x0a),
+	raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
+	raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
+	raw_pdu(0x0a, 0x03, 0x00),
+	raw_pdu(0x0b, 0x01),
+	end_pdu
+};
+
 static void gatt_client_register_action(void)
 {
 	struct test_data *data = tester_get_data();
@@ -504,6 +555,24 @@ static void gatt_client_get_included_action(void)
 	schedule_action_verification(step);
 }
 
+static void gatt_client_read_characteristic_action(void)
+{
+	struct test_data *data = tester_get_data();
+	struct step *current_data_step = queue_peek_head(data->steps);
+	struct read_char_data *read_char_data = current_data_step->set_data;
+	const btgatt_client_interface_t *client = data->if_gatt->client;
+	struct step *step = g_new0(struct step, 1);
+	int status;
+
+	status = client->read_characteristic(read_char_data->conn_id,
+			read_char_data->service, read_char_data->characteristic,
+			read_char_data->auth_req);
+
+	step->action_status = status;
+
+	schedule_action_verification(step);
+}
+
 static void gatt_cid_hook_cb(const void *data, uint16_t len, void *user_data)
 {
 	struct test_data *t_data = tester_get_data();
@@ -608,6 +677,41 @@ static void init_pdus(void)
 	schedule_action_verification(step);
 }
 
+static void init_read_params_action(void)
+{
+	struct test_data *data = tester_get_data();
+	struct step *current_data_step = queue_peek_head(data->steps);
+	struct step *step = g_new0(struct step, 1);
+	struct set_read_params *set_param_data = current_data_step->set_data;
+	btgatt_read_params_t *param = set_param_data->params;
+
+	memset(param, 0, sizeof(*param));
+
+	if (set_param_data->srvc_id)
+		memcpy(&param->srvc_id, set_param_data->srvc_id,
+						sizeof(btgatt_srvc_id_t));
+
+	if (set_param_data->char_id)
+		memcpy(&param->char_id, set_param_data->char_id,
+						sizeof(btgatt_gatt_id_t));
+
+	if (set_param_data->descr_id)
+		memcpy(&param->descr_id, set_param_data->descr_id,
+						sizeof(btgatt_gatt_id_t));
+
+	param->value_type = set_param_data->value_type;
+	param->status = set_param_data->status;
+	param->value.len = set_param_data->len;
+
+	if (param->value.len != 0)
+		memcpy(&param->value.value, set_param_data->value,
+							param->value.len);
+
+	step->action_status = BT_STATUS_SUCCESS;
+
+	schedule_action_verification(step);
+}
+
 static struct test_case test_cases[] = {
 	TEST_CASE_BREDRLE("Gatt Init",
 		ACTION_SUCCESS(dummy_action, NULL),
@@ -1103,6 +1207,38 @@ 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 Client - Read Characteristic - Success",
+		ACTION_SUCCESS(init_pdus, read_characteristic_1),
+		ACTION_SUCCESS(bluetooth_enable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
+		ACTION_SUCCESS(init_read_params_action, &set_read_param_1),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_read_characteristic_action,
+							&read_char_data_1),
+		CALLBACK_GATTC_READ_CHARACTERISTIC(GATT_STATUS_SUCCESS,
+						CONN1_ID, &read_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 06/15] android/tester: Add GATT Characteristic Read Ins. Auth.
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (4 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 05/15] android/tester: Add GATT Characteristic Read Success Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 07/15] android/tester: Add GATT Characteristic Read Wrong Params Marcin Kraglak
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test reading Characteristing while Insufficient Authorization
is returned.
---
 android/tester-gatt.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 7f761c2..6cf1e90 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -26,6 +26,7 @@
 
 #define GATT_STATUS_SUCCESS	0x00000000
 #define GATT_STATUS_FAILURE	0x00000101
+#define GATT_STATUS_INS_AUTH	0x08
 
 #define CLIENT1_ID	1
 #define CLIENT2_ID	2
@@ -261,6 +262,13 @@ static struct set_read_params set_read_param_1 = {
 	.status = BT_STATUS_SUCCESS
 };
 
+static struct set_read_params set_read_param_2 = {
+	.params = &read_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.status = GATT_STATUS_INS_AUTH
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -394,6 +402,20 @@ static struct pdu read_characteristic_1[] = {
 	end_pdu
 };
 
+static struct pdu read_characteristic_2[] = {
+	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
+	raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x01, 0x11, 0x11, 0x00, 0x0a),
+	raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
+	raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
+	raw_pdu(0x0a, 0x03, 0x00),
+	raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x08),
+	end_pdu
+};
+
 static void gatt_client_register_action(void)
 {
 	struct test_data *data = tester_get_data();
@@ -1239,6 +1261,38 @@ 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 Client - Read Characteristic - Ins. Author.",
+		ACTION_SUCCESS(init_pdus, read_characteristic_2),
+		ACTION_SUCCESS(bluetooth_enable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
+		ACTION_SUCCESS(init_read_params_action, &set_read_param_2),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_read_characteristic_action,
+							&read_char_data_1),
+		CALLBACK_GATTC_READ_CHARACTERISTIC(GATT_STATUS_INS_AUTH,
+						CONN1_ID, &read_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 07/15] android/tester: Add GATT Characteristic Read Wrong Params
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (5 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 06/15] android/tester: Add GATT Characteristic Read Ins. Auth Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 08/15] android/tester: Add GATT Descriptor Read Success Marcin Kraglak
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test Reading Characteristic value with wrog parameters.
---
 android/tester-gatt.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 6cf1e90..055ce7b 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -235,6 +235,12 @@ static struct read_char_data read_char_data_1 = {
 	.characteristic = &characteristic_1,
 };
 
+static struct read_char_data read_char_data_2 = {
+	.conn_id = CONN1_ID,
+	.service = &service_2,
+	.characteristic = &characteristic_1,
+};
+
 static struct get_incl_data get_incl_data_1 = {
 	.conn_id = CONN1_ID,
 	.service = &service_1
@@ -269,6 +275,13 @@ static struct set_read_params set_read_param_2 = {
 	.status = GATT_STATUS_INS_AUTH
 };
 
+static struct set_read_params set_read_param_3 = {
+	.params = &read_params_1,
+	.srvc_id = &service_2,
+	.char_id = &characteristic_1,
+	.status = 0x01,
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -1293,6 +1306,38 @@ 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 Client - Read Characteristic - Wrong params",
+		ACTION_SUCCESS(init_pdus, read_characteristic_2),
+		ACTION_SUCCESS(bluetooth_enable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
+		ACTION_SUCCESS(init_read_params_action, &set_read_param_3),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_FAIL(gatt_client_read_characteristic_action,
+							&read_char_data_2),
+		CALLBACK_GATTC_READ_CHARACTERISTIC(GATT_STATUS_FAILURE,
+						CONN1_ID, &read_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 08/15] android/tester: Add GATT Descriptor Read Success
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (6 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 07/15] android/tester: Add GATT Characteristic Read Wrong Params Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 09/15] android/tester: Add GATT Descriptor Read Ins. Auth Marcin Kraglak
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test Reading Descriptor Value.
---
 android/tester-gatt.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 055ce7b..855bd5a 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -99,6 +99,14 @@ struct read_char_data {
 	int auth_req;
 };
 
+struct read_desc_data {
+	const int conn_id;
+	btgatt_srvc_id_t *service;
+	btgatt_gatt_id_t *characteristic;
+	btgatt_gatt_id_t *descriptor;
+	int auth_req;
+};
+
 static bt_uuid_t client2_app_uuid = {
 	.uu = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
 				0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 },
@@ -241,6 +249,13 @@ static struct read_char_data read_char_data_2 = {
 	.characteristic = &characteristic_1,
 };
 
+static struct read_desc_data read_desc_data_1 = {
+	.conn_id = CONN1_ID,
+	.service = &service_1,
+	.characteristic = &characteristic_1,
+	.descriptor = &desc_1,
+};
+
 static struct get_incl_data get_incl_data_1 = {
 	.conn_id = CONN1_ID,
 	.service = &service_1
@@ -282,6 +297,16 @@ static struct set_read_params set_read_param_3 = {
 	.status = 0x01,
 };
 
+static struct set_read_params set_read_param_4 = {
+	.params = &read_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.descr_id = &desc_1,
+	.value = value_1,
+	.len = 1,
+	.status = BT_STATUS_SUCCESS
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -429,6 +454,24 @@ static struct pdu read_characteristic_2[] = {
 	end_pdu
 };
 
+static struct pdu read_descriptor_1[] = {
+	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
+	raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x01, 0x11, 0x11, 0x00, 0x0a),
+	raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x00, 0x00, 0x19, 0x00),
+	raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
+	raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
+	raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29),
+	raw_pdu(0x04, 0x05, 0x00, 0x10, 0x00),
+	raw_pdu(0x01, 0x04, 0x05, 0x00, 0x0a),
+	raw_pdu(0x0a, 0x04, 0x00),
+	raw_pdu(0x0b, 0x01),
+	end_pdu
+};
+
 static void gatt_client_register_action(void)
 {
 	struct test_data *data = tester_get_data();
@@ -608,6 +651,25 @@ static void gatt_client_read_characteristic_action(void)
 	schedule_action_verification(step);
 }
 
+static void gatt_client_read_descriptor_action(void)
+{
+	struct test_data *data = tester_get_data();
+	struct step *current_data_step = queue_peek_head(data->steps);
+	struct read_desc_data *read_desc_data = current_data_step->set_data;
+	const btgatt_client_interface_t *client = data->if_gatt->client;
+	struct step *step = g_new0(struct step, 1);
+	int status;
+
+	status = client->read_descriptor(read_desc_data->conn_id,
+			read_desc_data->service, read_desc_data->characteristic,
+			read_desc_data->descriptor,
+			read_desc_data->auth_req);
+
+	step->action_status = status;
+
+	schedule_action_verification(step);
+}
+
 static void gatt_cid_hook_cb(const void *data, uint16_t len, void *user_data)
 {
 	struct test_data *t_data = tester_get_data();
@@ -1338,6 +1400,42 @@ 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 Client - Read Descriptor - Success",
+		ACTION_SUCCESS(init_pdus, read_descriptor_1),
+		ACTION_SUCCESS(init_read_params_action, &set_read_param_4),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_get_descriptor_action,
+							&get_desc_data_1),
+		CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
+				&service_1, &characteristic_1, &desc_1),
+		ACTION_SUCCESS(gatt_client_read_descriptor_action,
+							&read_desc_data_1),
+		CALLBACK_GATTC_READ_DESCRIPTOR(GATT_STATUS_SUCCESS,
+						CONN1_ID, &read_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 09/15] android/tester: Add GATT Descriptor Read Ins. Auth.
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (7 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 08/15] android/tester: Add GATT Descriptor Read Success Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 10/15] android/tester: Add GATT Descriptor Read Wrong params Marcin Kraglak
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test reading descriptor's value while Insufficient Authorization
is returned.
---
 android/tester-gatt.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 855bd5a..37d2508 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -307,6 +307,14 @@ static struct set_read_params set_read_param_4 = {
 	.status = BT_STATUS_SUCCESS
 };
 
+static struct set_read_params set_read_param_5 = {
+	.params = &read_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.descr_id = &desc_1,
+	.status = GATT_STATUS_INS_AUTH
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -472,6 +480,24 @@ static struct pdu read_descriptor_1[] = {
 	end_pdu
 };
 
+static struct pdu read_descriptor_2[] = {
+	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
+	raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x01, 0x11, 0x11, 0x00, 0x0a),
+	raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x00, 0x00, 0x19, 0x00),
+	raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
+	raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
+	raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29),
+	raw_pdu(0x04, 0x05, 0x00, 0x10, 0x00),
+	raw_pdu(0x01, 0x04, 0x05, 0x00, 0x0a),
+	raw_pdu(0x0a, 0x04, 0x00),
+	raw_pdu(0x01, 0x0a, 0x04, 0x00, 0x08),
+	end_pdu
+};
+
 static void gatt_client_register_action(void)
 {
 	struct test_data *data = tester_get_data();
@@ -1436,6 +1462,42 @@ 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 Client - Read Descriptor - Ins. Author.",
+		ACTION_SUCCESS(init_pdus, read_descriptor_2),
+		ACTION_SUCCESS(init_read_params_action, &set_read_param_5),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_get_descriptor_action,
+							&get_desc_data_1),
+		CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
+				&service_1, &characteristic_1, &desc_1),
+		ACTION_SUCCESS(gatt_client_read_descriptor_action,
+							&read_desc_data_1),
+		CALLBACK_GATTC_READ_DESCRIPTOR(GATT_STATUS_INS_AUTH,
+						CONN1_ID, &read_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 10/15] android/tester: Add GATT Descriptor Read Wrong params
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (8 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 09/15] android/tester: Add GATT Descriptor Read Ins. Auth Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 11/15] android/tester: Add GATT Characteristic Write Cmd Success Marcin Kraglak
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test reading descriptor with wrong params.
---
 android/tester-gatt.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 37d2508..e52adc0 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -256,6 +256,13 @@ static struct read_desc_data read_desc_data_1 = {
 	.descriptor = &desc_1,
 };
 
+static struct read_desc_data read_desc_data_2 = {
+	.conn_id = CONN1_ID,
+	.service = &service_1,
+	.characteristic = &characteristic_1,
+	.descriptor = &desc_2,
+};
+
 static struct get_incl_data get_incl_data_1 = {
 	.conn_id = CONN1_ID,
 	.service = &service_1
@@ -315,6 +322,14 @@ static struct set_read_params set_read_param_5 = {
 	.status = GATT_STATUS_INS_AUTH
 };
 
+static struct set_read_params set_read_param_6 = {
+	.params = &read_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.descr_id = &desc_2,
+	.status = 0x01
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -1498,6 +1513,42 @@ 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 Client - Read Descriptor - Wrong params",
+		ACTION_SUCCESS(init_pdus, read_descriptor_2),
+		ACTION_SUCCESS(init_read_params_action, &set_read_param_6),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_get_descriptor_action,
+							&get_desc_data_1),
+		CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
+				&service_1, &characteristic_1, &desc_1),
+		ACTION_FAIL(gatt_client_read_descriptor_action,
+							&read_desc_data_2),
+		CALLBACK_GATTC_READ_DESCRIPTOR(GATT_STATUS_FAILURE,
+						CONN1_ID, &read_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 11/15] android/tester: Add GATT Characteristic Write Cmd Success
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (9 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 10/15] android/tester: Add GATT Descriptor Read Wrong params Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 12/15] android/tester: Add GATT Characteristic Write Req Success Marcin Kraglak
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test Characteristic write command.
---
 android/tester-gatt.c | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 134 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index e52adc0..747b545 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -107,6 +107,16 @@ struct read_desc_data {
 	int auth_req;
 };
 
+struct write_char_data {
+	int conn_id;
+	btgatt_srvc_id_t *service;
+	btgatt_gatt_id_t *characteristic;
+	int write_type;
+	int len;
+	int auth_req;
+	char *p_value;
+};
+
 static bt_uuid_t client2_app_uuid = {
 	.uu = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
 				0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 },
@@ -213,6 +223,7 @@ static btgatt_gatt_id_t desc_2 = {
 };
 
 static btgatt_read_params_t read_params_1;
+static btgatt_write_params_t write_params_1;
 
 static struct get_char_data get_char_data_1 = {
 	.conn_id = CONN1_ID,
@@ -268,6 +279,18 @@ static struct get_incl_data get_incl_data_1 = {
 	.service = &service_1
 };
 
+static char value_2[] = {0x00, 0x01, 0x02, 0x03};
+
+static struct write_char_data write_char_data_1 = {
+	.conn_id = CONN1_ID,
+	.service = &service_1,
+	.characteristic = &characteristic_1,
+	.write_type = 1,
+	.len = sizeof(value_2),
+	.p_value = value_2,
+	.auth_req = 0
+};
+
 struct set_read_params {
 	btgatt_read_params_t *params;
 	btgatt_srvc_id_t *srvc_id;
@@ -279,6 +302,14 @@ struct set_read_params {
 	uint8_t status;
 };
 
+struct set_write_params {
+	btgatt_write_params_t *params;
+	btgatt_srvc_id_t *srvc_id;
+	btgatt_gatt_id_t *char_id;
+	btgatt_gatt_id_t *descr_id;
+	uint8_t status;
+};
+
 static uint8_t value_1[] = {0x01};
 
 static struct set_read_params set_read_param_1 = {
@@ -330,6 +361,13 @@ static struct set_read_params set_read_param_6 = {
 	.status = 0x01
 };
 
+static struct set_write_params set_write_param_1 = {
+	.params = &write_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.status = BT_STATUS_SUCCESS
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -513,6 +551,19 @@ static struct pdu read_descriptor_2[] = {
 	end_pdu
 };
 
+static struct pdu write_characteristic_1[] = {
+	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
+	raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x01, 0x11, 0x11, 0x00, 0x0a),
+	raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
+	raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
+	raw_pdu(0x52, 0x03, 0x00, 0x00, 0x01, 0x02, 0x03),
+	end_pdu
+};
+
 static void gatt_client_register_action(void)
 {
 	struct test_data *data = tester_get_data();
@@ -711,6 +762,28 @@ static void gatt_client_read_descriptor_action(void)
 	schedule_action_verification(step);
 }
 
+static void gatt_client_write_characteristic_action(void)
+{
+	struct test_data *data = tester_get_data();
+	struct step *current_data_step = queue_peek_head(data->steps);
+	struct write_char_data *write_char_data = current_data_step->set_data;
+	const btgatt_client_interface_t *client = data->if_gatt->client;
+	struct step *step = g_new0(struct step, 1);
+	int status;
+
+	status = client->write_characteristic(write_char_data->conn_id,
+						write_char_data->service,
+						write_char_data->characteristic,
+						write_char_data->write_type,
+						write_char_data->len,
+						write_char_data->auth_req,
+						write_char_data->p_value);
+
+	step->action_status = status;
+
+	schedule_action_verification(step);
+}
+
 static void gatt_cid_hook_cb(const void *data, uint16_t len, void *user_data)
 {
 	struct test_data *t_data = tester_get_data();
@@ -850,6 +923,35 @@ static void init_read_params_action(void)
 	schedule_action_verification(step);
 }
 
+static void init_write_params_action(void)
+{
+	struct test_data *data = tester_get_data();
+	struct step *current_data_step = queue_peek_head(data->steps);
+	struct step *step = g_new0(struct step, 1);
+	struct set_write_params *set_param_data = current_data_step->set_data;
+	btgatt_write_params_t *param = set_param_data->params;
+
+	memset(param, 0, sizeof(*param));
+
+	if (set_param_data->srvc_id)
+		memcpy(&param->srvc_id, set_param_data->srvc_id,
+						sizeof(btgatt_srvc_id_t));
+
+	if (set_param_data->char_id)
+		memcpy(&param->char_id, set_param_data->char_id,
+						sizeof(btgatt_gatt_id_t));
+
+	if (set_param_data->descr_id)
+		memcpy(&param->descr_id, set_param_data->descr_id,
+						sizeof(btgatt_gatt_id_t));
+
+	param->status = set_param_data->status;
+
+	step->action_status = BT_STATUS_SUCCESS;
+
+	schedule_action_verification(step);
+}
+
 static struct test_case test_cases[] = {
 	TEST_CASE_BREDRLE("Gatt Init",
 		ACTION_SUCCESS(dummy_action, NULL),
@@ -1549,6 +1651,38 @@ 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 Client - Write Characteristic Cmd - Success",
+		ACTION_SUCCESS(init_pdus, write_characteristic_1),
+		ACTION_SUCCESS(bluetooth_enable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
+		ACTION_SUCCESS(init_write_params_action, &set_write_param_1),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_write_characteristic_action,
+							&write_char_data_1),
+		CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_SUCCESS,
+						CONN1_ID, &write_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 12/15] android/tester: Add GATT Characteristic Write Req Success
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (10 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 11/15] android/tester: Add GATT Characteristic Write Cmd Success Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 13/15] android/tester: Add GATT Write Characteristic Ins. Auth Marcin Kraglak
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test Characteristic write request.
---
 android/tester-gatt.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 747b545..d0046b6 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -291,6 +291,16 @@ static struct write_char_data write_char_data_1 = {
 	.auth_req = 0
 };
 
+static struct write_char_data write_char_data_2 = {
+	.conn_id = CONN1_ID,
+	.service = &service_1,
+	.characteristic = &characteristic_1,
+	.write_type = 2,
+	.len = sizeof(value_2),
+	.p_value = value_2,
+	.auth_req = 0
+};
+
 struct set_read_params {
 	btgatt_read_params_t *params;
 	btgatt_srvc_id_t *srvc_id;
@@ -564,6 +574,20 @@ static struct pdu write_characteristic_1[] = {
 	end_pdu
 };
 
+static struct pdu write_characteristic_2[] = {
+	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
+	raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x01, 0x11, 0x11, 0x00, 0x0a),
+	raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
+	raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
+	raw_pdu(0x12, 0x03, 0x00, 0x00, 0x01, 0x02, 0x03),
+	raw_pdu(0x13),
+	end_pdu
+};
+
 static void gatt_client_register_action(void)
 {
 	struct test_data *data = tester_get_data();
@@ -1683,6 +1707,38 @@ 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 Client - Write Characteristic Req - Success",
+		ACTION_SUCCESS(init_pdus, write_characteristic_2),
+		ACTION_SUCCESS(bluetooth_enable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
+		ACTION_SUCCESS(init_write_params_action, &set_write_param_1),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_write_characteristic_action,
+							&write_char_data_2),
+		CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_SUCCESS,
+						CONN1_ID, &write_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 13/15] android/tester: Add GATT Write Characteristic Ins. Auth.
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (11 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 12/15] android/tester: Add GATT Characteristic Write Req Success Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:37 ` [PATCHv2 14/15] android/gatt: Set proper status of write_data Marcin Kraglak
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Test write characteristic with Insufficient Authorization error.
---
 android/tester-gatt.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index d0046b6..b0aee0d 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -378,6 +378,13 @@ static struct set_write_params set_write_param_1 = {
 	.status = BT_STATUS_SUCCESS
 };
 
+static struct set_write_params set_write_param_2 = {
+	.params = &write_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.status = GATT_STATUS_INS_AUTH
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -588,6 +595,20 @@ static struct pdu write_characteristic_2[] = {
 	end_pdu
 };
 
+static struct pdu write_characteristic_3[] = {
+	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
+	raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
+	raw_pdu(0x01, 0x11, 0x11, 0x00, 0x0a),
+	raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
+	raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
+	raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
+	raw_pdu(0x12, 0x03, 0x00, 0x00, 0x01, 0x02, 0x03),
+	raw_pdu(0x01, 0x12, 0x03, 0x00, 0x08),
+	end_pdu
+};
+
 static void gatt_client_register_action(void)
 {
 	struct test_data *data = tester_get_data();
@@ -1739,6 +1760,38 @@ 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 Client - Write Characteristic - Ins. Author.",
+		ACTION_SUCCESS(init_pdus, write_characteristic_3),
+		ACTION_SUCCESS(bluetooth_enable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
+		ACTION_SUCCESS(init_write_params_action, &set_write_param_2),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_SUCCESS(gatt_client_connect_action, &client1_conn_req),
+		CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
+						prop_emu_remotes_default_set,
+						CONN1_ID, CLIENT1_ID),
+		ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
+		CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
+		ACTION_SUCCESS(gatt_client_get_characteristic_action,
+							&get_char_data_1),
+		CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
+				CONN1_ID, &service_1, &characteristic_1, 4),
+		ACTION_SUCCESS(gatt_client_write_characteristic_action,
+							&write_char_data_2),
+		CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_INS_AUTH,
+						CONN1_ID, &write_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 14/15] android/gatt: Set proper status of write_data
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (12 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 13/15] android/tester: Add GATT Write Characteristic Ins. Auth Marcin Kraglak
@ 2014-09-24 11:37 ` Marcin Kraglak
  2014-09-24 11:38 ` [PATCHv2 15/15] android/tester: Add GATT Write Characteristic Wrong params Marcin Kraglak
  2014-09-25  9:32 ` [PATCHv2 00/15] android/tester: GATT Client test cases Szymon Janc
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:37 UTC (permalink / raw)
  To: linux-bluetooth

Set proper status in write characteristic callback data struct.
---
 android/gatt.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/android/gatt.c b/android/gatt.c
index 32db2af..1d9971c 100644
--- a/android/gatt.c
+++ b/android/gatt.c
@@ -3127,6 +3127,7 @@ static void send_client_write_char_notify(int32_t status, int32_t conn_id,
 
 	ev.conn_id = conn_id;
 	ev.status = status;
+	ev.data.status = status;
 
 	element_id_to_hal_srvc_id(srvc_id, primary, &ev.data.srvc_id);
 	element_id_to_hal_gatt_id(char_id, &ev.data.char_id);
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCHv2 15/15] android/tester: Add GATT Write Characteristic Wrong params
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (13 preceding siblings ...)
  2014-09-24 11:37 ` [PATCHv2 14/15] android/gatt: Set proper status of write_data Marcin Kraglak
@ 2014-09-24 11:38 ` Marcin Kraglak
  2014-09-25  9:32 ` [PATCHv2 00/15] android/tester: GATT Client test cases Szymon Janc
  15 siblings, 0 replies; 18+ messages in thread
From: Marcin Kraglak @ 2014-09-24 11:38 UTC (permalink / raw)
  To: linux-bluetooth

Test calling write characteristic with wrong params.
---
 android/tester-gatt.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index b0aee0d..04b79c7 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -385,6 +385,13 @@ static struct set_write_params set_write_param_2 = {
 	.status = GATT_STATUS_INS_AUTH
 };
 
+static struct set_write_params set_write_param_3 = {
+	.params = &write_params_1,
+	.srvc_id = &service_1,
+	.char_id = &characteristic_1,
+	.status = 0x01
+};
+
 static struct pdu search_service[] = {
 	raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
 	raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
@@ -1792,6 +1799,28 @@ 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 Client - Write Characteristic - Wrong Params",
+		ACTION_SUCCESS(init_pdus, write_characteristic_3),
+		ACTION_SUCCESS(bluetooth_enable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
+		ACTION_SUCCESS(init_write_params_action, &set_write_param_3),
+		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_client_register_action, &client_app_uuid),
+		CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
+		ACTION_SUCCESS(gatt_client_start_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
+		ACTION_SUCCESS(gatt_client_stop_scan_action,
+							INT_TO_PTR(CLIENT1_ID)),
+		ACTION_FAIL(gatt_client_write_characteristic_action,
+							&write_char_data_2),
+		CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_FAILURE,
+						CONN1_ID, &write_params_1),
+		ACTION_SUCCESS(bluetooth_disable_action, NULL),
+		CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
+	),
 };
 
 struct queue *get_gatt_tests(void)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCHv2 01/15] android/tester: Fix condition check
  2014-09-24 11:37 ` [PATCHv2 01/15] android/tester: Fix condition check Marcin Kraglak
@ 2014-09-25  9:11   ` Szymon Janc
  0 siblings, 0 replies; 18+ messages in thread
From: Szymon Janc @ 2014-09-25  9:11 UTC (permalink / raw)
  To: Marcin Kraglak; +Cc: linux-bluetooth

Hi Marcin,

On Wednesday 24 of September 2014 13:37:46 Marcin Kraglak wrote:
> It may cause NULL pointer dereference.
> ---
>  android/tester-gatt.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/android/tester-gatt.c b/android/tester-gatt.c
> index 42f3733..f30d0eb 100644
> --- a/android/tester-gatt.c
> +++ b/android/tester-gatt.c
> @@ -545,7 +545,7 @@ static void gatt_cid_hook_cb(const void *data, uint16_t len, void *user_data)
>  		}
>  		queue_pop_head(t_data->pdus);
>  		gatt_pdu = queue_pop_head(t_data->pdus);
> -		if (!gatt_pdu->data)
> +		if (!gatt_pdu)

Shouldn't this be:

if (!gatt_pdu || !gatt_pdu->data)

?


>  			break;
>  
>  		bthost_send_cid(bthost, cid_data->handle, cid_data->cid,
> 

-- 
Best regards, 
Szymon Janc

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCHv2 00/15] android/tester: GATT Client test cases
  2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
                   ` (14 preceding siblings ...)
  2014-09-24 11:38 ` [PATCHv2 15/15] android/tester: Add GATT Write Characteristic Wrong params Marcin Kraglak
@ 2014-09-25  9:32 ` Szymon Janc
  15 siblings, 0 replies; 18+ messages in thread
From: Szymon Janc @ 2014-09-25  9:32 UTC (permalink / raw)
  To: Marcin Kraglak; +Cc: linux-bluetooth

Hi Marcin,

On Wednesday 24 of September 2014 13:37:45 Marcin Kraglak wrote:
> This patch set contains test cases for reading/writing characteristics
> and descriptors. There are also minor fixes for android-tester
> and android/gatt.
> Few test cases were already send to ML, and now they are rebased.
> 
> BR
> Marcin
> 
> Marcin Kraglak (15):
>   android/tester: Fix condition check
>   android/tester: Change function names
>   android/tester: Make local variable static
>   android/tester: Add support for GATT Client Read/Write callbacks
>   android/tester: Add GATT Characteristic Read Success
>   android/tester: Add GATT Characteristic Read Ins. Auth.
>   android/tester: Add GATT Characteristic Read Wrong Params
>   android/tester: Add GATT Descriptor Read Success
>   android/tester: Add GATT Descriptor Read Ins. Auth.
>   android/tester: Add GATT Descriptor Read Wrong params
>   android/tester: Add GATT Characteristic Write Cmd Success
>   android/tester: Add GATT Characteristic Write Req Success
>   android/tester: Add GATT Write Characteristic Ins. Auth.
>   android/gatt: Set proper status of write_data
>   android/tester: Add GATT Write Characteristic Wrong params
> 
>  android/gatt.c        |   1 +
>  android/tester-gatt.c | 747 +++++++++++++++++++++++++++++++++++++++++++++++++-
>  android/tester-main.c |  84 +++++-
>  android/tester-main.h |  31 +++
>  4 files changed, 848 insertions(+), 15 deletions(-)
> 

I've fixed NULL check and pushed all patches. Thanks. 

-- 
Best regards, 
Szymon Janc

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2014-09-25  9:32 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-24 11:37 [PATCHv2 00/15] android/tester: GATT Client test cases Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 01/15] android/tester: Fix condition check Marcin Kraglak
2014-09-25  9:11   ` Szymon Janc
2014-09-24 11:37 ` [PATCHv2 02/15] android/tester: Change function names Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 03/15] android/tester: Make local variable static Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 04/15] android/tester: Add support for GATT Client Read/Write callbacks Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 05/15] android/tester: Add GATT Characteristic Read Success Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 06/15] android/tester: Add GATT Characteristic Read Ins. Auth Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 07/15] android/tester: Add GATT Characteristic Read Wrong Params Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 08/15] android/tester: Add GATT Descriptor Read Success Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 09/15] android/tester: Add GATT Descriptor Read Ins. Auth Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 10/15] android/tester: Add GATT Descriptor Read Wrong params Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 11/15] android/tester: Add GATT Characteristic Write Cmd Success Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 12/15] android/tester: Add GATT Characteristic Write Req Success Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 13/15] android/tester: Add GATT Write Characteristic Ins. Auth Marcin Kraglak
2014-09-24 11:37 ` [PATCHv2 14/15] android/gatt: Set proper status of write_data Marcin Kraglak
2014-09-24 11:38 ` [PATCHv2 15/15] android/tester: Add GATT Write Characteristic Wrong params Marcin Kraglak
2014-09-25  9:32 ` [PATCHv2 00/15] android/tester: GATT Client test cases Szymon Janc

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