1/****************************************************************************** 2 * 3 * Copyright 2015 Google, Inc. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19#include <stdlib.h> 20#include <time.h> 21#include <unistd.h> 22 23#include "gatt/gatt_test.h" 24 25namespace bttest { 26 27TEST_F(GattTest, GattClientRegister) { 28 // Registers gatt client. 29 bluetooth::Uuid gatt_client_uuid = bluetooth::Uuid::GetRandom(); 30 gatt_client_interface()->register_client(gatt_client_uuid); 31 semaphore_wait(register_client_callback_sem_); 32 EXPECT_TRUE(status() == BT_STATUS_SUCCESS) 33 << "Error registering GATT client app callback."; 34 35 // Unregisters gatt client. No callback is expected. 36 gatt_client_interface()->unregister_client(client_interface_id()); 37} 38 39TEST_F(GattTest, GattServerRegister) { 40 // Registers gatt server. 41 bluetooth::Uuid gatt_server_uuid = bluetooth::Uuid::GetRandom(); 42 gatt_server_interface()->register_server(gatt_server_uuid); 43 semaphore_wait(register_server_callback_sem_); 44 EXPECT_TRUE(status() == BT_STATUS_SUCCESS) 45 << "Error registering GATT server app callback."; 46 47 // Unregisters gatt server. No callback is expected. 48 gatt_server_interface()->unregister_server(server_interface_id()); 49} 50 51TEST_F(GattTest, GattServerBuild) { 52 // Registers gatt server. 53 bluetooth::Uuid gatt_server_uuid = bluetooth::Uuid::GetRandom(); 54 gatt_server_interface()->register_server(gatt_server_uuid); 55 semaphore_wait(register_server_callback_sem_); 56 EXPECT_TRUE(status() == BT_STATUS_SUCCESS) 57 << "Error registering GATT server app callback."; 58 59 // Service UUID. 60 bluetooth::Uuid srvc_uuid = bluetooth::Uuid::GetRandom(); 61 62 // Characteristics UUID. 63 bluetooth::Uuid char_uuid = bluetooth::Uuid::GetRandom(); 64 65 // Descriptor UUID. 66 bluetooth::Uuid desc_uuid = bluetooth::Uuid::GetRandom(); 67 68 // Adds service. 69 int server_if = server_interface_id(); 70 71 std::vector<btgatt_db_element_t> service = { 72 {.type = BTGATT_DB_PRIMARY_SERVICE, .uuid = srvc_uuid}, 73 {.type = BTGATT_DB_CHARACTERISTIC, 74 .uuid = char_uuid, 75 .properties = 0x10 /* notification */, 76 .permissions = 0x01 /* read only */}, 77 {.type = BTGATT_DB_DESCRIPTOR, .uuid = desc_uuid, .permissions = 0x01}}; 78 79 gatt_server_interface()->add_service(server_if, service); 80 semaphore_wait(service_added_callback_sem_); 81 EXPECT_TRUE(status() == BT_STATUS_SUCCESS) << "Error adding service."; 82 EXPECT_TRUE(server_interface_id() == server_if) << "Wrong server_if added."; 83 int service_handle_added = service_handle(); 84 85 // Stops server. 86 gatt_server_interface()->stop_service(server_if, service_handle()); 87 semaphore_wait(service_stopped_callback_sem_); 88 EXPECT_TRUE(status() == BT_STATUS_SUCCESS) << "Error stopping server."; 89 EXPECT_TRUE(service_handle() == service_handle_added) 90 << "Wrong service handle stopped."; 91 EXPECT_TRUE(server_interface_id() == server_if) << "Wrong server_if stopped."; 92 93 // Deletes service. 94 gatt_server_interface()->delete_service(server_if, service_handle()); 95 semaphore_wait(service_deleted_callback_sem_); 96 EXPECT_TRUE(status() == BT_STATUS_SUCCESS) << "Error deleting service."; 97 EXPECT_TRUE(service_handle() == service_handle_added) 98 << "Wrong service handle deleted."; 99 EXPECT_TRUE(server_interface_id() == server_if) << "Wrong server_if deleted."; 100 101 // Unregisters gatt server. No callback is expected. 102 gatt_server_interface()->unregister_server(server_if); 103} 104 105} // bttest 106