diff options
Diffstat (limited to 'test/suite/cases')
-rw-r--r-- | test/suite/cases/cases.c | 4 | ||||
-rw-r--r-- | test/suite/cases/gatt.c | 79 |
2 files changed, 72 insertions, 11 deletions
diff --git a/test/suite/cases/cases.c b/test/suite/cases/cases.c index e93422919..476a3a15e 100644 --- a/test/suite/cases/cases.c +++ b/test/suite/cases/cases.c @@ -38,6 +38,7 @@ TEST_CASE_DECL(gatt_client_register); TEST_CASE_DECL(gatt_client_scan); TEST_CASE_DECL(gatt_client_advertise); TEST_CASE_DECL(gatt_server_register); +TEST_CASE_DECL(gatt_server_build); // These are run with the Bluetooth adapter disabled. const test_case_t sanity_suite[] = { @@ -62,7 +63,8 @@ const test_case_t test_suite[] = { TEST_CASE(gatt_client_register), TEST_CASE(gatt_client_scan), TEST_CASE(gatt_client_advertise), - TEST_CASE(gatt_server_register) + TEST_CASE(gatt_server_register), + TEST_CASE(gatt_server_build) }; const size_t sanity_suite_size = ARRAY_SIZE(sanity_suite); diff --git a/test/suite/cases/gatt.c b/test/suite/cases/gatt.c index ec2f98d4c..fd6835a24 100644 --- a/test/suite/cases/gatt.c +++ b/test/suite/cases/gatt.c @@ -6,10 +6,10 @@ #include "support/gatt.h" #include "support/callbacks.h" -bt_uuid_t app_uuid; +#define DEFAULT_RANDOM_SEED 42 -static void assign_random_app_uuid(bt_uuid_t *uuid) { - srand(42); +static void create_random_uuid(bt_uuid_t *uuid, int seed) { + srand(seed < 0 ? time(NULL) : seed); for (int i = 0; i < 16; ++i) { uuid->uu[i] = (uint8_t) (rand() % 256); } @@ -19,8 +19,9 @@ bool gatt_client_register() { TASSERT(gatt_interface != NULL, "Null GATT interface."); // Registers gatt client. - assign_random_app_uuid(&app_uuid); - CALL_AND_WAIT(gatt_interface->client->register_client(&app_uuid), btgattc_register_app_cb); + bt_uuid_t gatt_client_uuid; + create_random_uuid(&gatt_client_uuid, DEFAULT_RANDOM_SEED); + CALL_AND_WAIT(gatt_interface->client->register_client(&gatt_client_uuid), btgattc_register_app_cb); TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error registering GATT client app callback."); // Unregisters gatt client. No callback is expected. @@ -45,8 +46,9 @@ bool gatt_client_advertise() { TASSERT(gatt_interface != NULL, "Null GATT interface."); // Registers a new client app. - assign_random_app_uuid(&app_uuid); - CALL_AND_WAIT(gatt_interface->client->register_client(&app_uuid), btgattc_register_app_cb); + bt_uuid_t gatt_client_uuid; + create_random_uuid(&gatt_client_uuid, DEFAULT_RANDOM_SEED); + CALL_AND_WAIT(gatt_interface->client->register_client(&gatt_client_uuid), btgattc_register_app_cb); TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error registering GATT client app callback."); // Starts advertising. @@ -66,12 +68,69 @@ bool gatt_client_advertise() { bool gatt_server_register() { TASSERT(gatt_interface != NULL, "Null GATT interface."); - // Registers gatt server - assign_random_app_uuid(&app_uuid); - CALL_AND_WAIT(gatt_interface->server->register_server(&app_uuid), btgatts_register_app_cb); + // Registers gatt server. + bt_uuid_t gatt_server_uuid; + create_random_uuid(&gatt_server_uuid, DEFAULT_RANDOM_SEED); + CALL_AND_WAIT(gatt_interface->server->register_server(&gatt_server_uuid), btgatts_register_app_cb); TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error registering GATT server app callback."); // Unregisters gatt server. No callback is expected. gatt_interface->server->unregister_server(gatt_get_server_interface()); return true; +} + +bool gatt_server_build() { + TASSERT(gatt_interface != NULL, "Null GATT interface."); + + // Registers gatt server. + bt_uuid_t gatt_server_uuid; + create_random_uuid(&gatt_server_uuid, DEFAULT_RANDOM_SEED); + CALL_AND_WAIT(gatt_interface->server->register_server(&gatt_server_uuid), btgatts_register_app_cb); + TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error registering GATT server app callback."); + + // Service UUID. + btgatt_srvc_id_t srvc_id; + srvc_id.id.inst_id = 0; // there is only one instance of this service. + srvc_id.is_primary = 1; // this service is primary. + create_random_uuid(&srvc_id.id.uuid, -1); + + // Characteristics UUID. + bt_uuid_t char_uuid; + create_random_uuid(&char_uuid, -1); + + // Descriptor UUID. + bt_uuid_t desc_uuid; + create_random_uuid(&desc_uuid, -1); + + // Adds service. + int server_if = gatt_get_server_interface(); + CALL_AND_WAIT(gatt_interface->server->add_service(server_if, &srvc_id, 4 /* # handles */), btgatts_service_added_cb); + TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error adding service."); + + // Adds characteristics. + int srvc_handle = gatt_get_service_handle(); + CALL_AND_WAIT(gatt_interface->server->add_characteristic(server_if, srvc_handle, &char_uuid, 0x10 /* notification */, 0x01 /* read only */), btgatts_characteristic_added_cb); + TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error adding characteristics."); + + // Adds descriptor. + int char_handle = gatt_get_characteristic_handle(); + CALL_AND_WAIT(gatt_interface->server->add_descriptor(server_if, srvc_handle, &desc_uuid, 0x01), btgatts_descriptor_added_cb); + TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error adding descriptor."); + + // Starts server. + CALL_AND_WAIT(gatt_interface->server->start_service(server_if, srvc_handle, 2 /*BREDR/LE*/), btgatts_service_started_cb); + TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error starting server."); + + // Stops server. + CALL_AND_WAIT(gatt_interface->server->stop_service(server_if, srvc_handle), btgatts_service_stopped_cb); + TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error stopping server."); + + // Deletes service. + CALL_AND_WAIT(gatt_interface->server->delete_service(server_if, srvc_handle), btgatts_service_deleted_cb); + TASSERT(gatt_get_status() == BT_STATUS_SUCCESS, "Error deleting service."); + + // Unregisters gatt server. No callback is expected. + gatt_interface->server->unregister_server(server_if); + + return true; }
\ No newline at end of file |