* [PATCH 2/7] android/tester: Add GATT server add include service test cases
2014-10-06 12:54 [PATCH 1/7] android/tester: Add GATT server add service test cases Grzegorz Kolodziejczyk
@ 2014-10-06 12:54 ` Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 3/7] android/tester: Add GATT server add characteristic " Grzegorz Kolodziejczyk
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-10-06 12:54 UTC (permalink / raw)
To: linux-bluetooth
This adds include service add by server test cases.
---
android/tester-gatt.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++
android/tester-main.c | 33 ++++++++++++++++++++-
android/tester-main.h | 10 +++++++
3 files changed, 121 insertions(+), 1 deletion(-)
diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 209b556..98b5077 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -48,6 +48,9 @@
static struct queue *list; /* List of gatt test cases */
+static int srvc1_handle;
+static int inc_srvc1_handle;
+
static bt_uuid_t app1_uuid = {
.uu = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 },
@@ -124,6 +127,11 @@ struct add_service_data {
int num_handles;
};
+struct add_included_service_data {
+ int app_id;
+ int *inc_srvc_handle;
+ int *srvc_handle;
+};
static bt_bdaddr_t emu_remote_bdaddr_val = {
.address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
@@ -365,6 +373,12 @@ static struct add_service_data add_service_data_3 = {
.num_handles = 1
};
+static struct add_service_data add_service_data_4 = {
+ .app_id = APP1_ID,
+ .service = &service_add_1,
+ .num_handles = 2
+};
+
static struct add_service_data add_bad_service_data_1 = {
.app_id = APP1_ID,
.service = &service_add_1,
@@ -377,6 +391,20 @@ static struct add_service_data add_sec_service_data_1 = {
.num_handles = 1
};
+static int srvc_bad_handle = -1;
+
+static struct add_included_service_data add_inc_service_data_1 = {
+ .app_id = APP1_ID,
+ .inc_srvc_handle = &inc_srvc1_handle,
+ .srvc_handle = &srvc1_handle
+};
+
+static struct add_included_service_data add_bad_inc_service_data_1 = {
+ .app_id = APP1_ID,
+ .inc_srvc_handle = &srvc_bad_handle,
+ .srvc_handle = &srvc1_handle
+};
+
struct set_read_params {
btgatt_read_params_t *params;
btgatt_srvc_id_t *srvc_id;
@@ -1091,6 +1119,22 @@ static void gatt_server_add_service_action(void)
schedule_action_verification(step);
}
+static void gatt_server_add_inc_service_action(void)
+{
+ struct test_data *data = tester_get_data();
+ struct step *current_data_step = queue_peek_head(data->steps);
+ struct add_included_service_data *add_inc_srvc_data =
+ current_data_step->set_data;
+ struct step *step = g_new0(struct step, 1);
+
+ step->action_status = data->if_gatt->server->add_included_service(
+ add_inc_srvc_data->app_id,
+ *add_inc_srvc_data->srvc_handle,
+ *add_inc_srvc_data->inc_srvc_handle);
+
+ 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();
@@ -2400,6 +2444,41 @@ static struct test_case test_cases[] = {
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
&included_1, NULL, NULL),
),
+ TEST_CASE_BREDRLE("Gatt Server - Add Included Service Successful",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_4),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_4),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &inc_srvc1_handle),
+ ACTION_SUCCESS(gatt_server_add_inc_service_action,
+ &add_inc_service_data_1),
+ CALLBACK_GATTS_INC_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &srvc1_handle, NULL),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Add Inc. Service with wrong handle",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_4),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_4),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL, NULL),
+ ACTION_FAIL(gatt_server_add_inc_service_action,
+ &add_bad_inc_service_data_1),
+ CALLBACK_GATTS_INC_SERVICE_ADDED(GATT_STATUS_FAILURE, APP1_ID,
+ &srvc1_handle, NULL),
+ ),
};
struct queue *get_gatt_tests(void)
diff --git a/android/tester-main.c b/android/tester-main.c
index 141e4c6..f2eac79 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -783,6 +783,16 @@ static bool match_data(struct step *step)
return false;
}
+ if (exp->callback_result.inc_srvc_handle &&
+ step->callback_result.inc_srvc_handle)
+ if (*exp->callback_result.inc_srvc_handle !=
+ *step->callback_result.inc_srvc_handle) {
+ tester_debug("Gatt inc. srvc handle mismatch: %d vs %d",
+ *step->callback_result.inc_srvc_handle,
+ *exp->callback_result.inc_srvc_handle);
+ return false;
+ }
+
if (exp->store_srvc_handle)
memcpy(exp->store_srvc_handle,
step->callback_result.srvc_handle,
@@ -894,6 +904,9 @@ static void destroy_callback_step(void *data)
if (step->callback_result.srvc_handle)
free(step->callback_result.srvc_handle);
+ if (step->callback_result.inc_srvc_handle)
+ free(step->callback_result.inc_srvc_handle);
+
g_free(step);
g_atomic_int_dec_and_test(&scheduled_cbacks_num);
}
@@ -1515,6 +1528,24 @@ static void gatts_service_added_cb(int status, int server_if,
schedule_callback_verification(step);
}
+static void gatts_included_service_added_cb(int status, int server_if,
+ int srvc_handle,
+ int inc_srvc_handle)
+{
+ struct step *step = g_new0(struct step, 1);
+
+ step->callback = CB_GATTS_INCLUDED_SERVICE_ADDED;
+
+ step->callback_result.status = status;
+ step->callback_result.gatt_app_id = server_if;
+ step->callback_result.srvc_handle = g_memdup(&srvc_handle,
+ sizeof(srvc_handle));
+ step->callback_result.inc_srvc_handle = g_memdup(&inc_srvc_handle,
+ sizeof(inc_srvc_handle));
+
+ schedule_callback_verification(step);
+}
+
static void pan_control_state_cb(btpan_control_state_t state,
bt_status_t error, int local_role,
const char *ifname)
@@ -1639,7 +1670,7 @@ static const btgatt_server_callbacks_t btgatt_server_callbacks = {
.register_server_cb = gatts_register_server_cb,
.connection_cb = gatts_connection_cb,
.service_added_cb = gatts_service_added_cb,
- .included_service_added_cb = NULL,
+ .included_service_added_cb = gatts_included_service_added_cb,
.characteristic_added_cb = NULL,
.descriptor_added_cb = NULL,
.service_started_cb = NULL,
diff --git a/android/tester-main.h b/android/tester-main.h
index 79df8de..14adb65 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
@@ -263,6 +263,15 @@ struct pdu_set {
.store_srvc_handle = cb_store_srvc_handle, \
}
+#define CALLBACK_GATTS_INC_SERVICE_ADDED(cb_res, cb_server_id, cb_srvc_handle, \
+ cb_inc_srvc_handle) { \
+ .callback = CB_GATTS_INCLUDED_SERVICE_ADDED, \
+ .callback_result.status = cb_res, \
+ .callback_result.gatt_app_id = cb_server_id, \
+ .callback_result.srvc_handle = cb_srvc_handle, \
+ .callback_result.inc_srvc_handle = cb_inc_srvc_handle, \
+ }
+
#define CALLBACK_PAN_CTRL_STATE(cb, cb_res, cb_state, cb_local_role) { \
.callback = cb, \
.callback_result.status = cb_res, \
@@ -512,6 +521,7 @@ struct bt_callback_data {
int conn_id;
int connected;
int *srvc_handle;
+ int *inc_srvc_handle;
btgatt_srvc_id_t *service;
btgatt_gatt_id_t *characteristic;
btgatt_gatt_id_t *descriptor;
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 3/7] android/tester: Add GATT server add characteristic test cases
2014-10-06 12:54 [PATCH 1/7] android/tester: Add GATT server add service test cases Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 2/7] android/tester: Add GATT server add include " Grzegorz Kolodziejczyk
@ 2014-10-06 12:54 ` Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 4/7] android/tester: Add GATT server add descriptor " Grzegorz Kolodziejczyk
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-10-06 12:54 UTC (permalink / raw)
To: linux-bluetooth
This adds characteristic add by server test cases.
---
android/tester-gatt.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++
android/tester-main.c | 41 +++++++++++++++++++++++++++-
android/tester-main.h | 16 +++++++++++
3 files changed, 130 insertions(+), 1 deletion(-)
diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 98b5077..0f084ed 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -133,6 +133,14 @@ struct add_included_service_data {
int *srvc_handle;
};
+struct add_char_data {
+ int app_id;
+ int *srvc_handle;
+ bt_uuid_t *uuid;
+ int properties;
+ int permissions;
+};
+
static bt_bdaddr_t emu_remote_bdaddr_val = {
.address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
};
@@ -379,6 +387,12 @@ static struct add_service_data add_service_data_4 = {
.num_handles = 2
};
+static struct add_service_data add_service_data_5 = {
+ .app_id = APP1_ID,
+ .service = &service_add_1,
+ .num_handles = 3
+};
+
static struct add_service_data add_bad_service_data_1 = {
.app_id = APP1_ID,
.service = &service_add_1,
@@ -405,6 +419,22 @@ static struct add_included_service_data add_bad_inc_service_data_1 = {
.srvc_handle = &srvc1_handle
};
+static struct add_char_data add_char_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc1_handle,
+ .uuid = &app1_uuid,
+ .properties = 0,
+ .permissions = 0
+};
+
+static struct add_char_data add_bad_char_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc_bad_handle,
+ .uuid = &app1_uuid,
+ .properties = 0,
+ .permissions = 0
+};
+
struct set_read_params {
btgatt_read_params_t *params;
btgatt_srvc_id_t *srvc_id;
@@ -1135,6 +1165,23 @@ static void gatt_server_add_inc_service_action(void)
schedule_action_verification(step);
}
+static void gatt_server_add_char_action(void)
+{
+ struct test_data *data = tester_get_data();
+ struct step *current_data_step = queue_peek_head(data->steps);
+ struct add_char_data *add_char_data = current_data_step->set_data;
+ struct step *step = g_new0(struct step, 1);
+
+ step->action_status = data->if_gatt->server->add_characteristic(
+ add_char_data->app_id,
+ *add_char_data->srvc_handle,
+ add_char_data->uuid,
+ add_char_data->properties,
+ add_char_data->permissions);
+
+ 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();
@@ -2479,6 +2526,33 @@ static struct test_case test_cases[] = {
CALLBACK_GATTS_INC_SERVICE_ADDED(GATT_STATUS_FAILURE, APP1_ID,
&srvc1_handle, NULL),
),
+ TEST_CASE_BREDRLE("Gatt Server - Add Single Characteristic Successful",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_5),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
+ CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
+ APP1_ID, &app1_uuid,
+ &srvc1_handle, NULL,
+ NULL),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Add Char. wrong service handle",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_5),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_FAIL(gatt_server_add_char_action, &add_bad_char_data_1),
+ CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_FAILURE,
+ APP1_ID, &app1_uuid,
+ NULL, NULL, NULL),
+ ),
};
struct queue *get_gatt_tests(void)
diff --git a/android/tester-main.c b/android/tester-main.c
index f2eac79..8ba4947 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -793,11 +793,24 @@ static bool match_data(struct step *step)
return false;
}
+ if (exp->callback_result.uuid && step->callback_result.uuid)
+ if (memcmp(exp->callback_result.uuid,
+ step->callback_result.uuid,
+ sizeof(*exp->callback_result.uuid))) {
+ tester_debug("Uuid mismatch");
+ return false;
+ }
+
if (exp->store_srvc_handle)
memcpy(exp->store_srvc_handle,
step->callback_result.srvc_handle,
sizeof(*exp->store_srvc_handle));
+ if (exp->store_char_handle)
+ memcpy(exp->store_char_handle,
+ step->callback_result.char_handle,
+ sizeof(*exp->store_char_handle));
+
return true;
}
@@ -907,6 +920,12 @@ static void destroy_callback_step(void *data)
if (step->callback_result.inc_srvc_handle)
free(step->callback_result.inc_srvc_handle);
+ if (step->callback_result.uuid)
+ free(step->callback_result.uuid);
+
+ if (step->callback_result.char_handle)
+ free(step->callback_result.char_handle);
+
g_free(step);
g_atomic_int_dec_and_test(&scheduled_cbacks_num);
}
@@ -1546,6 +1565,26 @@ static void gatts_included_service_added_cb(int status, int server_if,
schedule_callback_verification(step);
}
+static void gatts_characteristic_added_cb(int status, int server_if,
+ bt_uuid_t *uuid,
+ int srvc_handle,
+ int char_handle)
+{
+ struct step *step = g_new0(struct step, 1);
+
+ step->callback = CB_GATTS_CHARACTERISTIC_ADDED;
+
+ step->callback_result.status = status;
+ step->callback_result.gatt_app_id = server_if;
+ step->callback_result.srvc_handle = g_memdup(&srvc_handle,
+ sizeof(srvc_handle));
+ step->callback_result.uuid = g_memdup(uuid, sizeof(*uuid));
+ step->callback_result.char_handle = g_memdup(&char_handle,
+ sizeof(char_handle));
+
+ schedule_callback_verification(step);
+}
+
static void pan_control_state_cb(btpan_control_state_t state,
bt_status_t error, int local_role,
const char *ifname)
@@ -1671,7 +1710,7 @@ static const btgatt_server_callbacks_t btgatt_server_callbacks = {
.connection_cb = gatts_connection_cb,
.service_added_cb = gatts_service_added_cb,
.included_service_added_cb = gatts_included_service_added_cb,
- .characteristic_added_cb = NULL,
+ .characteristic_added_cb = gatts_characteristic_added_cb,
.descriptor_added_cb = NULL,
.service_started_cb = NULL,
.service_stopped_cb = NULL,
diff --git a/android/tester-main.h b/android/tester-main.h
index 14adb65..2400824 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
@@ -272,6 +272,19 @@ struct pdu_set {
.callback_result.inc_srvc_handle = cb_inc_srvc_handle, \
}
+#define CALLBACK_GATTS_CHARACTERISTIC_ADDED(cb_res, cb_server_id, cb_uuid, \
+ cb_srvc_handle, \
+ cb_char_handle, \
+ cb_store_char_handle) { \
+ .callback = CB_GATTS_CHARACTERISTIC_ADDED, \
+ .callback_result.status = cb_res, \
+ .callback_result.gatt_app_id = cb_server_id, \
+ .callback_result.uuid = cb_uuid, \
+ .callback_result.srvc_handle = cb_srvc_handle, \
+ .callback_result.char_handle = cb_char_handle, \
+ .store_char_handle = cb_store_char_handle, \
+ }
+
#define CALLBACK_PAN_CTRL_STATE(cb, cb_res, cb_state, cb_local_role) { \
.callback = cb, \
.callback_result.status = cb_res, \
@@ -509,6 +522,7 @@ struct bt_callback_data {
bt_status_t status;
int num_properties;
bt_property_t *properties;
+ bt_uuid_t *uuid;
bt_ssp_variant_t pairing_variant;
@@ -522,6 +536,7 @@ struct bt_callback_data {
int connected;
int *srvc_handle;
int *inc_srvc_handle;
+ int *char_handle;
btgatt_srvc_id_t *service;
btgatt_gatt_id_t *characteristic;
btgatt_gatt_id_t *descriptor;
@@ -559,6 +574,7 @@ struct step {
int set_data_len;
int *store_srvc_handle;
+ int *store_char_handle;
};
struct test_case {
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 4/7] android/tester: Add GATT server add descriptor test cases
2014-10-06 12:54 [PATCH 1/7] android/tester: Add GATT server add service test cases Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 2/7] android/tester: Add GATT server add include " Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 3/7] android/tester: Add GATT server add characteristic " Grzegorz Kolodziejczyk
@ 2014-10-06 12:54 ` Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 5/7] android/tester: Add GATT server start service " Grzegorz Kolodziejczyk
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-10-06 12:54 UTC (permalink / raw)
To: linux-bluetooth
This adds descriptor add by server test cases.
---
android/tester-gatt.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++
android/tester-main.c | 25 ++++++++++++-
android/tester-main.h | 14 +++++++
3 files changed, 140 insertions(+), 1 deletion(-)
diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index 0f084ed..d7a8032 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -141,6 +141,13 @@ struct add_char_data {
int permissions;
};
+struct add_desc_data {
+ int app_id;
+ int *srvc_handle;
+ bt_uuid_t *uuid;
+ int permissions;
+};
+
static bt_bdaddr_t emu_remote_bdaddr_val = {
.address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
};
@@ -393,6 +400,12 @@ static struct add_service_data add_service_data_5 = {
.num_handles = 3
};
+static struct add_service_data add_service_data_6 = {
+ .app_id = APP1_ID,
+ .service = &service_add_1,
+ .num_handles = 4
+};
+
static struct add_service_data add_bad_service_data_1 = {
.app_id = APP1_ID,
.service = &service_add_1,
@@ -435,6 +448,27 @@ static struct add_char_data add_bad_char_data_1 = {
.permissions = 0
};
+static struct add_desc_data add_bad_desc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc_bad_handle,
+ .uuid = &app2_uuid,
+ .permissions = 0
+};
+
+static struct add_desc_data add_bad_desc_data_2 = {
+ .app_id = APP2_ID,
+ .srvc_handle = &srvc1_handle,
+ .uuid = &app2_uuid,
+ .permissions = 0
+};
+
+static struct add_desc_data add_desc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc1_handle,
+ .uuid = &app2_uuid,
+ .permissions = 0
+};
+
struct set_read_params {
btgatt_read_params_t *params;
btgatt_srvc_id_t *srvc_id;
@@ -1182,6 +1216,22 @@ static void gatt_server_add_char_action(void)
schedule_action_verification(step);
}
+static void gatt_server_add_desc_action(void)
+{
+ struct test_data *data = tester_get_data();
+ struct step *current_data_step = queue_peek_head(data->steps);
+ struct add_desc_data *add_desc_data = current_data_step->set_data;
+ struct step *step = g_new0(struct step, 1);
+
+ step->action_status = data->if_gatt->server->add_descriptor(
+ add_desc_data->app_id,
+ *add_desc_data->srvc_handle,
+ add_desc_data->uuid,
+ add_desc_data->permissions);
+
+ 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();
@@ -2553,6 +2603,58 @@ static struct test_case test_cases[] = {
APP1_ID, &app1_uuid,
NULL, NULL, NULL),
),
+ TEST_CASE_BREDRLE("Gatt Server - Add Single Descriptor Successful",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_6),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
+ CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
+ APP1_ID, &app1_uuid,
+ &srvc1_handle, NULL,
+ NULL),
+ ACTION_SUCCESS(gatt_server_add_desc_action, &add_desc_data_1),
+ CALLBACK_GATTS_DESCRIPTOR_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &app2_uuid, &srvc1_handle,
+ NULL, NULL),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Add Desc. wrong service handle",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_6),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
+ CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
+ APP1_ID, &app1_uuid,
+ &srvc1_handle, NULL,
+ NULL),
+ ACTION_FAIL(gatt_server_add_desc_action, &add_bad_desc_data_1),
+ CALLBACK_GATTS_DESCRIPTOR_ADDED(GATT_STATUS_FAILURE, APP1_ID,
+ &app2_uuid, NULL, NULL, NULL),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Add Desc. wrong app ID",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_6),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
+ CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
+ APP1_ID, &app1_uuid,
+ &srvc1_handle, NULL,
+ NULL),
+ ACTION_FAIL(gatt_server_add_desc_action, &add_bad_desc_data_2),
+ CALLBACK_GATTS_DESCRIPTOR_ADDED(GATT_STATUS_FAILURE, APP2_ID,
+ &app2_uuid, NULL, NULL, NULL),
+ ),
};
struct queue *get_gatt_tests(void)
diff --git a/android/tester-main.c b/android/tester-main.c
index 8ba4947..30e1c59 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -926,6 +926,9 @@ static void destroy_callback_step(void *data)
if (step->callback_result.char_handle)
free(step->callback_result.char_handle);
+ if (step->callback_result.desc_handle)
+ free(step->callback_result.desc_handle);
+
g_free(step);
g_atomic_int_dec_and_test(&scheduled_cbacks_num);
}
@@ -1585,6 +1588,26 @@ static void gatts_characteristic_added_cb(int status, int server_if,
schedule_callback_verification(step);
}
+static void gatts_descriptor_added_cb(int status, int server_if,
+ bt_uuid_t *uuid,
+ int srvc_handle,
+ int desc_handle)
+{
+ struct step *step = g_new0(struct step, 1);
+
+ step->callback = CB_GATTS_DESCRIPTOR_ADDED;
+
+ step->callback_result.status = status;
+ step->callback_result.gatt_app_id = server_if;
+ step->callback_result.srvc_handle = g_memdup(&srvc_handle,
+ sizeof(srvc_handle));
+ step->callback_result.uuid = g_memdup(uuid, sizeof(*uuid));
+ step->callback_result.desc_handle = g_memdup(&desc_handle,
+ sizeof(desc_handle));
+
+ schedule_callback_verification(step);
+}
+
static void pan_control_state_cb(btpan_control_state_t state,
bt_status_t error, int local_role,
const char *ifname)
@@ -1711,7 +1734,7 @@ static const btgatt_server_callbacks_t btgatt_server_callbacks = {
.service_added_cb = gatts_service_added_cb,
.included_service_added_cb = gatts_included_service_added_cb,
.characteristic_added_cb = gatts_characteristic_added_cb,
- .descriptor_added_cb = NULL,
+ .descriptor_added_cb = gatts_descriptor_added_cb,
.service_started_cb = NULL,
.service_stopped_cb = NULL,
.service_deleted_cb = NULL,
diff --git a/android/tester-main.h b/android/tester-main.h
index 2400824..17a6eb3 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
@@ -285,6 +285,18 @@ struct pdu_set {
.store_char_handle = cb_store_char_handle, \
}
+#define CALLBACK_GATTS_DESCRIPTOR_ADDED(cb_res, cb_server_id, cb_uuid, \
+ cb_srvc_handle, cb_desc_handle, \
+ cb_store_desc_handle) { \
+ .callback = CB_GATTS_DESCRIPTOR_ADDED, \
+ .callback_result.status = cb_res, \
+ .callback_result.gatt_app_id = cb_server_id, \
+ .callback_result.uuid = cb_uuid, \
+ .callback_result.srvc_handle = cb_srvc_handle, \
+ .callback_result.desc_handle = cb_desc_handle, \
+ .store_desc_handle = cb_store_desc_handle, \
+ }
+
#define CALLBACK_PAN_CTRL_STATE(cb, cb_res, cb_state, cb_local_role) { \
.callback = cb, \
.callback_result.status = cb_res, \
@@ -537,6 +549,7 @@ struct bt_callback_data {
int *srvc_handle;
int *inc_srvc_handle;
int *char_handle;
+ int *desc_handle;
btgatt_srvc_id_t *service;
btgatt_gatt_id_t *characteristic;
btgatt_gatt_id_t *descriptor;
@@ -575,6 +588,7 @@ struct step {
int *store_srvc_handle;
int *store_char_handle;
+ int *store_desc_handle;
};
struct test_case {
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 5/7] android/tester: Add GATT server start service test cases
2014-10-06 12:54 [PATCH 1/7] android/tester: Add GATT server add service test cases Grzegorz Kolodziejczyk
` (2 preceding siblings ...)
2014-10-06 12:54 ` [PATCH 4/7] android/tester: Add GATT server add descriptor " Grzegorz Kolodziejczyk
@ 2014-10-06 12:54 ` Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 6/7] android/tester: Add GATT server stop " Grzegorz Kolodziejczyk
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-10-06 12:54 UTC (permalink / raw)
To: linux-bluetooth
This adds start service by server test cases.
---
android/tester-gatt.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++
android/tester-main.c | 16 +++++++-
android/tester-main.h | 7 ++++
3 files changed, 122 insertions(+), 1 deletion(-)
diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index d7a8032..cc4b452 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -46,6 +46,10 @@
#define PROP_ATUTHENTICATED_SIGNED_WRITES 0x40
#define PROP_EXTENDED_PROPERTIES 0x80
+#define GATT_SERVER_TRANSPORT_LE 0x00
+#define GATT_SERVER_TRANSPORT_BREDR 0x01
+#define GATT_SERVER_TRANSPORT_LE_BREDR 0x02
+
static struct queue *list; /* List of gatt test cases */
static int srvc1_handle;
@@ -148,6 +152,12 @@ struct add_desc_data {
int permissions;
};
+struct start_srvc_data {
+ int app_id;
+ int *srvc_handle;
+ int transport;
+};
+
static bt_bdaddr_t emu_remote_bdaddr_val = {
.address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
};
@@ -469,6 +479,30 @@ static struct add_desc_data add_desc_data_1 = {
.permissions = 0
};
+static struct start_srvc_data start_srvc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc1_handle,
+ .transport = GATT_SERVER_TRANSPORT_LE_BREDR
+};
+
+static struct start_srvc_data start_srvc_data_2 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc1_handle,
+ .transport = GATT_SERVER_TRANSPORT_LE
+};
+
+static struct start_srvc_data start_bad_srvc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc_bad_handle,
+ .transport = GATT_SERVER_TRANSPORT_LE
+};
+
+static struct start_srvc_data start_bad_srvc_data_2 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc1_handle,
+ .transport = -1
+};
+
struct set_read_params {
btgatt_read_params_t *params;
btgatt_srvc_id_t *srvc_id;
@@ -1232,6 +1266,21 @@ static void gatt_server_add_desc_action(void)
schedule_action_verification(step);
}
+static void gatt_server_start_srvc_action(void)
+{
+ struct test_data *data = tester_get_data();
+ struct step *current_data_step = queue_peek_head(data->steps);
+ struct start_srvc_data *start_srvc_data = current_data_step->set_data;
+ struct step *step = g_new0(struct step, 1);
+
+ step->action_status = data->if_gatt->server->start_service(
+ start_srvc_data->app_id,
+ *start_srvc_data->srvc_handle,
+ start_srvc_data->transport);
+
+ 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();
@@ -2655,6 +2704,57 @@ static struct test_case test_cases[] = {
CALLBACK_GATTS_DESCRIPTOR_ADDED(GATT_STATUS_FAILURE, APP2_ID,
&app2_uuid, NULL, NULL, NULL),
),
+ TEST_CASE_BREDRLE("Gatt Server - Start Service Successful BREDRLE",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_start_srvc_action,
+ &start_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
+ &srvc1_handle),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Start Service Successful LE",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_start_srvc_action,
+ &start_srvc_data_2),
+ CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
+ &srvc1_handle),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Start Service wrong service handle",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL, NULL),
+ ACTION_FAIL(gatt_server_start_srvc_action,
+ &start_bad_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_FAILURE, APP1_ID,
+ NULL),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Start Service wrong server transport",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_FAIL(gatt_server_start_srvc_action,
+ &start_bad_srvc_data_2),
+ CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_FAILURE, APP1_ID,
+ &srvc1_handle),
+ ),
};
struct queue *get_gatt_tests(void)
diff --git a/android/tester-main.c b/android/tester-main.c
index 30e1c59..4ffa3c1 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -1608,6 +1608,20 @@ static void gatts_descriptor_added_cb(int status, int server_if,
schedule_callback_verification(step);
}
+static void gatts_service_started_cb(int status, int server_if, int srvc_handle)
+{
+ struct step *step = g_new0(struct step, 1);
+
+ step->callback = CB_GATTS_SERVICE_STARTED;
+
+ step->callback_result.status = status;
+ step->callback_result.gatt_app_id = server_if;
+ step->callback_result.srvc_handle = g_memdup(&srvc_handle,
+ sizeof(srvc_handle));
+
+ schedule_callback_verification(step);
+}
+
static void pan_control_state_cb(btpan_control_state_t state,
bt_status_t error, int local_role,
const char *ifname)
@@ -1735,7 +1749,7 @@ static const btgatt_server_callbacks_t btgatt_server_callbacks = {
.included_service_added_cb = gatts_included_service_added_cb,
.characteristic_added_cb = gatts_characteristic_added_cb,
.descriptor_added_cb = gatts_descriptor_added_cb,
- .service_started_cb = NULL,
+ .service_started_cb = gatts_service_started_cb,
.service_stopped_cb = NULL,
.service_deleted_cb = NULL,
.request_read_cb = NULL,
diff --git a/android/tester-main.h b/android/tester-main.h
index 17a6eb3..1906a8d 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
@@ -297,6 +297,13 @@ struct pdu_set {
.store_desc_handle = cb_store_desc_handle, \
}
+#define CALLBACK_GATTS_SERVICE_STARTED(cb_res, cb_server_id, cb_srvc_handle) { \
+ .callback = CB_GATTS_SERVICE_STARTED, \
+ .callback_result.status = cb_res, \
+ .callback_result.gatt_app_id = cb_server_id, \
+ .callback_result.srvc_handle = cb_srvc_handle, \
+ }
+
#define CALLBACK_PAN_CTRL_STATE(cb, cb_res, cb_state, cb_local_role) { \
.callback = cb, \
.callback_result.status = cb_res, \
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 6/7] android/tester: Add GATT server stop service test cases
2014-10-06 12:54 [PATCH 1/7] android/tester: Add GATT server add service test cases Grzegorz Kolodziejczyk
` (3 preceding siblings ...)
2014-10-06 12:54 ` [PATCH 5/7] android/tester: Add GATT server start service " Grzegorz Kolodziejczyk
@ 2014-10-06 12:54 ` Grzegorz Kolodziejczyk
2014-10-06 12:54 ` [PATCH 7/7] android/tester: Add GATT server delete " Grzegorz Kolodziejczyk
2014-10-06 14:19 ` [PATCH 1/7] android/tester: Add GATT server add " Szymon Janc
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-10-06 12:54 UTC (permalink / raw)
To: linux-bluetooth
This adds stop service by server test cases.
---
android/tester-gatt.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++
android/tester-main.c | 16 ++++++++++++-
android/tester-main.h | 7 ++++++
3 files changed, 84 insertions(+), 1 deletion(-)
diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index cc4b452..abc28eb 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -158,6 +158,11 @@ struct start_srvc_data {
int transport;
};
+struct stop_srvc_data {
+ int app_id;
+ int *srvc_handle;
+};
+
static bt_bdaddr_t emu_remote_bdaddr_val = {
.address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
};
@@ -503,6 +508,16 @@ static struct start_srvc_data start_bad_srvc_data_2 = {
.transport = -1
};
+static struct stop_srvc_data stop_srvc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc1_handle
+};
+
+static struct stop_srvc_data stop_bad_srvc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc_bad_handle
+};
+
struct set_read_params {
btgatt_read_params_t *params;
btgatt_srvc_id_t *srvc_id;
@@ -1281,6 +1296,20 @@ static void gatt_server_start_srvc_action(void)
schedule_action_verification(step);
}
+static void gatt_server_stop_srvc_action(void)
+{
+ struct test_data *data = tester_get_data();
+ struct step *current_data_step = queue_peek_head(data->steps);
+ struct stop_srvc_data *stop_srvc_data = current_data_step->set_data;
+ struct step *step = g_new0(struct step, 1);
+
+ step->action_status = data->if_gatt->server->stop_service(
+ stop_srvc_data->app_id,
+ *stop_srvc_data->srvc_handle);
+
+ 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();
@@ -2755,6 +2784,39 @@ static struct test_case test_cases[] = {
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_FAILURE, APP1_ID,
&srvc1_handle),
),
+ TEST_CASE_BREDRLE("Gatt Server - Stop Service Successful",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_start_srvc_action,
+ &start_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_stop_srvc_action, &stop_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_STOPPED(GATT_STATUS_SUCCESS, APP1_ID,
+ &srvc1_handle),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Stop Service wrong service handle",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_start_srvc_action,
+ &start_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
+ &srvc1_handle),
+ ACTION_FAIL(gatt_server_stop_srvc_action,
+ &stop_bad_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_STOPPED(GATT_STATUS_FAILURE, APP1_ID,
+ NULL),
+ ),
};
struct queue *get_gatt_tests(void)
diff --git a/android/tester-main.c b/android/tester-main.c
index 4ffa3c1..253599b 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -1622,6 +1622,20 @@ static void gatts_service_started_cb(int status, int server_if, int srvc_handle)
schedule_callback_verification(step);
}
+static void gatts_service_stopped_cb(int status, int server_if, int srvc_handle)
+{
+ struct step *step = g_new0(struct step, 1);
+
+ step->callback = CB_GATTS_SERVICE_STOPPED;
+
+ step->callback_result.status = status;
+ step->callback_result.gatt_app_id = server_if;
+ step->callback_result.srvc_handle = g_memdup(&srvc_handle,
+ sizeof(srvc_handle));
+
+ schedule_callback_verification(step);
+}
+
static void pan_control_state_cb(btpan_control_state_t state,
bt_status_t error, int local_role,
const char *ifname)
@@ -1750,7 +1764,7 @@ static const btgatt_server_callbacks_t btgatt_server_callbacks = {
.characteristic_added_cb = gatts_characteristic_added_cb,
.descriptor_added_cb = gatts_descriptor_added_cb,
.service_started_cb = gatts_service_started_cb,
- .service_stopped_cb = NULL,
+ .service_stopped_cb = gatts_service_stopped_cb,
.service_deleted_cb = NULL,
.request_read_cb = NULL,
.request_write_cb = NULL,
diff --git a/android/tester-main.h b/android/tester-main.h
index 1906a8d..04195a7 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
@@ -304,6 +304,13 @@ struct pdu_set {
.callback_result.srvc_handle = cb_srvc_handle, \
}
+#define CALLBACK_GATTS_SERVICE_STOPPED(cb_res, cb_server_id, cb_srvc_handle) { \
+ .callback = CB_GATTS_SERVICE_STOPPED, \
+ .callback_result.status = cb_res, \
+ .callback_result.gatt_app_id = cb_server_id, \
+ .callback_result.srvc_handle = cb_srvc_handle, \
+ }
+
#define CALLBACK_PAN_CTRL_STATE(cb, cb_res, cb_state, cb_local_role) { \
.callback = cb, \
.callback_result.status = cb_res, \
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 7/7] android/tester: Add GATT server delete service test cases
2014-10-06 12:54 [PATCH 1/7] android/tester: Add GATT server add service test cases Grzegorz Kolodziejczyk
` (4 preceding siblings ...)
2014-10-06 12:54 ` [PATCH 6/7] android/tester: Add GATT server stop " Grzegorz Kolodziejczyk
@ 2014-10-06 12:54 ` Grzegorz Kolodziejczyk
2014-10-06 14:19 ` [PATCH 1/7] android/tester: Add GATT server add " Szymon Janc
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-10-06 12:54 UTC (permalink / raw)
To: linux-bluetooth
This adds delete service by server test cases.
---
android/tester-gatt.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++
android/tester-main.c | 16 ++++++++++++++-
android/tester-main.h | 7 +++++++
3 files changed, 76 insertions(+), 1 deletion(-)
diff --git a/android/tester-gatt.c b/android/tester-gatt.c
index abc28eb..b15735a 100644
--- a/android/tester-gatt.c
+++ b/android/tester-gatt.c
@@ -163,6 +163,11 @@ struct stop_srvc_data {
int *srvc_handle;
};
+struct delete_srvc_data {
+ int app_id;
+ int *srvc_handle;
+};
+
static bt_bdaddr_t emu_remote_bdaddr_val = {
.address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
};
@@ -518,6 +523,15 @@ static struct stop_srvc_data stop_bad_srvc_data_1 = {
.srvc_handle = &srvc_bad_handle
};
+static struct delete_srvc_data delete_srvc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc1_handle
+};
+
+static struct delete_srvc_data delete_bad_srvc_data_1 = {
+ .app_id = APP1_ID,
+ .srvc_handle = &srvc_bad_handle
+};
struct set_read_params {
btgatt_read_params_t *params;
btgatt_srvc_id_t *srvc_id;
@@ -1310,6 +1324,20 @@ static void gatt_server_stop_srvc_action(void)
schedule_action_verification(step);
}
+static void gatt_server_delete_srvc_action(void)
+{
+ struct test_data *data = tester_get_data();
+ struct step *current_data_step = queue_peek_head(data->steps);
+ struct delete_srvc_data *delete_srvc_data = current_data_step->set_data;
+ struct step *step = g_new0(struct step, 1);
+
+ step->action_status = data->if_gatt->server->delete_service(
+ delete_srvc_data->app_id,
+ *delete_srvc_data->srvc_handle);
+
+ 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();
@@ -2817,6 +2845,32 @@ static struct test_case test_cases[] = {
CALLBACK_GATTS_SERVICE_STOPPED(GATT_STATUS_FAILURE, APP1_ID,
NULL),
),
+ TEST_CASE_BREDRLE("Gatt Server - Delete Service Successful",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_SUCCESS(gatt_server_delete_srvc_action,
+ &delete_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_DELETED(GATT_STATUS_SUCCESS, APP1_ID,
+ &srvc1_handle),
+ ),
+ TEST_CASE_BREDRLE("Gatt Server - Delete Service wrong handle",
+ ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
+ CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
+ ACTION_SUCCESS(gatt_server_add_service_action,
+ &add_service_data_1),
+ CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
+ &service_add_1, NULL,
+ &srvc1_handle),
+ ACTION_FAIL(gatt_server_delete_srvc_action,
+ &delete_bad_srvc_data_1),
+ CALLBACK_GATTS_SERVICE_DELETED(GATT_STATUS_FAILURE, APP1_ID,
+ NULL),
+ ),
};
struct queue *get_gatt_tests(void)
diff --git a/android/tester-main.c b/android/tester-main.c
index 253599b..a804f11 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -1636,6 +1636,20 @@ static void gatts_service_stopped_cb(int status, int server_if, int srvc_handle)
schedule_callback_verification(step);
}
+static void gatts_service_deleted_cb(int status, int server_if, int srvc_handle)
+{
+ struct step *step = g_new0(struct step, 1);
+
+ step->callback = CB_GATTS_SERVICE_DELETED;
+
+ step->callback_result.status = status;
+ step->callback_result.gatt_app_id = server_if;
+ step->callback_result.srvc_handle = g_memdup(&srvc_handle,
+ sizeof(srvc_handle));
+
+ schedule_callback_verification(step);
+}
+
static void pan_control_state_cb(btpan_control_state_t state,
bt_status_t error, int local_role,
const char *ifname)
@@ -1765,7 +1779,7 @@ static const btgatt_server_callbacks_t btgatt_server_callbacks = {
.descriptor_added_cb = gatts_descriptor_added_cb,
.service_started_cb = gatts_service_started_cb,
.service_stopped_cb = gatts_service_stopped_cb,
- .service_deleted_cb = NULL,
+ .service_deleted_cb = gatts_service_deleted_cb,
.request_read_cb = NULL,
.request_write_cb = NULL,
.request_exec_write_cb = NULL,
diff --git a/android/tester-main.h b/android/tester-main.h
index 04195a7..22c5c8b 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
@@ -311,6 +311,13 @@ struct pdu_set {
.callback_result.srvc_handle = cb_srvc_handle, \
}
+#define CALLBACK_GATTS_SERVICE_DELETED(cb_res, cb_server_id, cb_srvc_handle) { \
+ .callback = CB_GATTS_SERVICE_DELETED, \
+ .callback_result.status = cb_res, \
+ .callback_result.gatt_app_id = cb_server_id, \
+ .callback_result.srvc_handle = cb_srvc_handle, \
+ }
+
#define CALLBACK_PAN_CTRL_STATE(cb, cb_res, cb_state, cb_local_role) { \
.callback = cb, \
.callback_result.status = cb_res, \
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH 1/7] android/tester: Add GATT server add service test cases
2014-10-06 12:54 [PATCH 1/7] android/tester: Add GATT server add service test cases Grzegorz Kolodziejczyk
` (5 preceding siblings ...)
2014-10-06 12:54 ` [PATCH 7/7] android/tester: Add GATT server delete " Grzegorz Kolodziejczyk
@ 2014-10-06 14:19 ` Szymon Janc
6 siblings, 0 replies; 8+ messages in thread
From: Szymon Janc @ 2014-10-06 14:19 UTC (permalink / raw)
To: Grzegorz Kolodziejczyk; +Cc: linux-bluetooth
Hi Grzegorz,
On Monday 06 of October 2014 14:54:00 Grzegorz Kolodziejczyk wrote:
> This adds service add by server test cases.
> ---
> android/tester-gatt.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++
> android/tester-main.c | 37 +++++++++++++++-
> android/tester-main.h | 14 ++++++
> 3 files changed, 169 insertions(+), 1 deletion(-)
>
> diff --git a/android/tester-gatt.c b/android/tester-gatt.c
> index 35cf7ed..209b556 100644
> --- a/android/tester-gatt.c
> +++ b/android/tester-gatt.c
> @@ -118,6 +118,13 @@ struct notif_data {
> btgatt_gatt_id_t *charac;
> };
>
> +struct add_service_data {
> + int app_id;
> + btgatt_srvc_id_t *service;
> + int num_handles;
> +};
> +
> +
> static bt_bdaddr_t emu_remote_bdaddr_val = {
> .address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
> };
> @@ -190,6 +197,33 @@ static btgatt_srvc_id_t service_2 = {
> }
> };
>
> +static btgatt_srvc_id_t service_add_1 = {
> + .is_primary = true,
> + .id = {
> + .inst_id = 0,
> + .uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
> + 0x00, 0x10, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x00},
> + }
> +};
> +
> +static btgatt_srvc_id_t service_add_2 = {
> + .is_primary = true,
> + .id = {
> + .inst_id = 1,
> + .uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
> + 0x00, 0x10, 0x00, 0x00, 0xFF, 0xDF, 0x00, 0x00},
> + }
> +};
> +
> +static btgatt_srvc_id_t service_add_3 = {
> + .is_primary = true,
> + .id = {
> + .inst_id = 2,
> + .uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
> + 0x00, 0x10, 0x00, 0x00, 0xFF, 0xCF, 0x00, 0x00},
> + }
> +};
> +
> static btgatt_srvc_id_t included_1 = {
> .is_primary = false,
> .id = {
> @@ -313,6 +347,36 @@ static struct notif_data notif_data_1 = {
> .bdaddr = &emu_remote_bdaddr_val,
> };
>
> +static struct add_service_data add_service_data_1 = {
> + .app_id = APP1_ID,
> + .service = &service_add_1,
> + .num_handles = 1
> +};
> +
> +static struct add_service_data add_service_data_2 = {
> + .app_id = APP1_ID,
> + .service = &service_add_2,
> + .num_handles = 1
> +};
> +
> +static struct add_service_data add_service_data_3 = {
> + .app_id = APP1_ID,
> + .service = &service_add_3,
> + .num_handles = 1
> +};
> +
> +static struct add_service_data add_bad_service_data_1 = {
> + .app_id = APP1_ID,
> + .service = &service_add_1,
> + .num_handles = 0
> +};
> +
> +static struct add_service_data add_sec_service_data_1 = {
> + .app_id = APP1_ID,
> + .service = &included_1,
> + .num_handles = 1
> +};
> +
> struct set_read_params {
> btgatt_read_params_t *params;
> btgatt_srvc_id_t *srvc_id;
> @@ -1012,6 +1076,21 @@ static void gatt_server_disconnect_action(void)
> schedule_action_verification(step);
> }
>
> +static void gatt_server_add_service_action(void)
> +{
> + struct test_data *data = tester_get_data();
> + struct step *current_data_step = queue_peek_head(data->steps);
> + struct add_service_data *add_srvc_data = current_data_step->set_data;
> + struct step *step = g_new0(struct step, 1);
> +
> + step->action_status = data->if_gatt->server->add_service(
> + add_srvc_data->app_id,
> + add_srvc_data->service,
> + add_srvc_data->num_handles);
> +
> + 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();
> @@ -2281,6 +2360,46 @@ 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 - Add Single Service Successful",
> + ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
> + CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
> + ACTION_SUCCESS(gatt_server_add_service_action,
> + &add_service_data_1),
> + CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
> + &service_add_1, NULL, NULL),
> + ),
> + TEST_CASE_BREDRLE("Gatt Server - Add Multiple Services Successful",
> + ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
> + CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
> + ACTION_SUCCESS(gatt_server_add_service_action,
> + &add_service_data_1),
> + CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
> + &service_add_1, NULL, NULL),
> + ACTION_SUCCESS(gatt_server_add_service_action,
> + &add_service_data_2),
> + CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
> + &service_add_2, NULL, NULL),
> + ACTION_SUCCESS(gatt_server_add_service_action,
> + &add_service_data_3),
> + CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
> + &service_add_3, NULL, NULL),
> + ),
> + TEST_CASE_BREDRLE("Gatt Server - Add Service with 0 handles",
> + ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
> + CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
> + ACTION_FAIL(gatt_server_add_service_action,
> + &add_bad_service_data_1),
> + CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_FAILURE, APP1_ID,
> + &service_add_1, NULL, NULL),
> + ),
> + TEST_CASE_BREDRLE("Gatt Server - Add Secondary Service",
> + ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
> + CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
> + ACTION_SUCCESS(gatt_server_add_service_action,
> + &add_sec_service_data_1),
> + CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
> + &included_1, NULL, NULL),
> + ),
> };
>
> struct queue *get_gatt_tests(void)
> diff --git a/android/tester-main.c b/android/tester-main.c
> index bb064b7..141e4c6 100644
> --- a/android/tester-main.c
> +++ b/android/tester-main.c
> @@ -773,6 +773,21 @@ static bool match_data(struct step *step)
> return false;
> }
>
> + if (exp->callback_result.srvc_handle &&
> + step->callback_result.srvc_handle)
> + if (*exp->callback_result.srvc_handle !=
> + *step->callback_result.srvc_handle) {
> + tester_debug("Gatt service handle mismatch: %d vs %d",
> + *step->callback_result.srvc_handle,
> + *exp->callback_result.srvc_handle);
> + return false;
> + }
> +
> + if (exp->store_srvc_handle)
> + memcpy(exp->store_srvc_handle,
> + step->callback_result.srvc_handle,
> + sizeof(*exp->store_srvc_handle));
> +
> return true;
> }
>
> @@ -876,6 +891,9 @@ static void destroy_callback_step(void *data)
> if (step->callback_result.notify_params)
> free(step->callback_result.notify_params);
>
> + if (step->callback_result.srvc_handle)
> + free(step->callback_result.srvc_handle);
> +
> g_free(step);
> g_atomic_int_dec_and_test(&scheduled_cbacks_num);
> }
> @@ -1480,6 +1498,23 @@ static void gatts_connection_cb(int conn_id, int server_if, int connected,
> schedule_callback_verification(step);
> }
>
> +static void gatts_service_added_cb(int status, int server_if,
> + btgatt_srvc_id_t *srvc_id,
> + int srvc_handle)
> +{
> + struct step *step = g_new0(struct step, 1);
> +
> + step->callback = CB_GATTS_SERVICE_ADDED;
> +
> + step->callback_result.status = status;
> + step->callback_result.gatt_app_id = server_if;
> + step->callback_result.service = g_memdup(srvc_id, sizeof(*srvc_id));
> + step->callback_result.srvc_handle = g_memdup(&srvc_handle,
> + sizeof(srvc_handle));
> +
> + schedule_callback_verification(step);
> +}
> +
> static void pan_control_state_cb(btpan_control_state_t state,
> bt_status_t error, int local_role,
> const char *ifname)
> @@ -1603,7 +1638,7 @@ static const btgatt_client_callbacks_t btgatt_client_callbacks = {
> static const btgatt_server_callbacks_t btgatt_server_callbacks = {
> .register_server_cb = gatts_register_server_cb,
> .connection_cb = gatts_connection_cb,
> - .service_added_cb = NULL,
> + .service_added_cb = gatts_service_added_cb,
> .included_service_added_cb = NULL,
> .characteristic_added_cb = NULL,
> .descriptor_added_cb = NULL,
> diff --git a/android/tester-main.h b/android/tester-main.h
> index 922f1cf..79df8de 100644
> --- a/android/tester-main.h
> +++ b/android/tester-main.h
> @@ -252,6 +252,17 @@ struct pdu_set {
> .callback_result.gatt_app_id = cb_server_id, \
> }
>
> +#define CALLBACK_GATTS_SERVICE_ADDED(cb_res, cb_server_id, cb_service, \
> + cb_srvc_handle, \
> + cb_store_srvc_handle) { \
> + .callback = CB_GATTS_SERVICE_ADDED, \
> + .callback_result.status = cb_res, \
> + .callback_result.gatt_app_id = cb_server_id, \
> + .callback_result.service = cb_service, \
> + .callback_result.srvc_handle = cb_srvc_handle, \
> + .store_srvc_handle = cb_store_srvc_handle, \
> + }
> +
> #define CALLBACK_PAN_CTRL_STATE(cb, cb_res, cb_state, cb_local_role) { \
> .callback = cb, \
> .callback_result.status = cb_res, \
> @@ -500,6 +511,7 @@ struct bt_callback_data {
> int gatt_app_id;
> int conn_id;
> int connected;
> + int *srvc_handle;
> btgatt_srvc_id_t *service;
> btgatt_gatt_id_t *characteristic;
> btgatt_gatt_id_t *descriptor;
> @@ -535,6 +547,8 @@ struct step {
>
> void *set_data;
> int set_data_len;
> +
> + int *store_srvc_handle;
> };
>
> struct test_case {
>
Patches 1-4 are now applied. Rest need to be rebased. Thanks.
--
Best regards,
Szymon Janc
^ permalink raw reply [flat|nested] 8+ messages in thread