10f7fd6c1SMilanka Ringwald /* 20f7fd6c1SMilanka Ringwald * Copyright (C) 2021 BlueKitchen GmbH 30f7fd6c1SMilanka Ringwald * 40f7fd6c1SMilanka Ringwald * Redistribution and use in source and binary forms, with or without 50f7fd6c1SMilanka Ringwald * modification, are permitted provided that the following conditions 60f7fd6c1SMilanka Ringwald * are met: 70f7fd6c1SMilanka Ringwald * 80f7fd6c1SMilanka Ringwald * 1. Redistributions of source code must retain the above copyright 90f7fd6c1SMilanka Ringwald * notice, this list of conditions and the following disclaimer. 100f7fd6c1SMilanka Ringwald * 2. Redistributions in binary form must reproduce the above copyright 110f7fd6c1SMilanka Ringwald * notice, this list of conditions and the following disclaimer in the 120f7fd6c1SMilanka Ringwald * documentation and/or other materials provided with the distribution. 130f7fd6c1SMilanka Ringwald * 3. Neither the name of the copyright holders nor the names of 140f7fd6c1SMilanka Ringwald * contributors may be used to endorse or promote products derived 150f7fd6c1SMilanka Ringwald * from this software without specific prior written permission. 160f7fd6c1SMilanka Ringwald * 4. Any redistribution, use, or modification is done solely for 170f7fd6c1SMilanka Ringwald * personal benefit and not for any commercial purpose or for 180f7fd6c1SMilanka Ringwald * monetary gain. 190f7fd6c1SMilanka Ringwald * 200f7fd6c1SMilanka Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 210f7fd6c1SMilanka Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 220f7fd6c1SMilanka Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 230f7fd6c1SMilanka Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS 240f7fd6c1SMilanka Ringwald * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 250f7fd6c1SMilanka Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 260f7fd6c1SMilanka Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 270f7fd6c1SMilanka Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 280f7fd6c1SMilanka Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 290f7fd6c1SMilanka Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 300f7fd6c1SMilanka Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 310f7fd6c1SMilanka Ringwald * SUCH DAMAGE. 320f7fd6c1SMilanka Ringwald * 330f7fd6c1SMilanka Ringwald * Please inquire about commercial licensing options at 340f7fd6c1SMilanka Ringwald * [email protected] 350f7fd6c1SMilanka Ringwald * 360f7fd6c1SMilanka Ringwald */ 370f7fd6c1SMilanka Ringwald #ifndef MOCK_GATT_CLIENT_H 380f7fd6c1SMilanka Ringwald #define MOCK_GATT_CLIENT_H 390f7fd6c1SMilanka Ringwald 400f7fd6c1SMilanka Ringwald #include <stdint.h> 410f7fd6c1SMilanka Ringwald 420f7fd6c1SMilanka Ringwald #if defined __cplusplus 430f7fd6c1SMilanka Ringwald extern "C" { 440f7fd6c1SMilanka Ringwald #endif 450f7fd6c1SMilanka Ringwald 460f7fd6c1SMilanka Ringwald #include "ble/gatt_client.h" 470f7fd6c1SMilanka Ringwald 487da2c1baSMilanka Ringwald typedef struct { 497da2c1baSMilanka Ringwald btstack_linked_item_t item; 5076cdba3eSMilanka Ringwald uint16_t start_group_handle; 5176cdba3eSMilanka Ringwald uint16_t end_group_handle; 527da2c1baSMilanka Ringwald uint16_t uuid16; 537da2c1baSMilanka Ringwald // uint8_t uuid128[16]; 547da2c1baSMilanka Ringwald btstack_linked_list_t characteristics; 557da2c1baSMilanka Ringwald } mock_gatt_client_service_t; 567da2c1baSMilanka Ringwald 577da2c1baSMilanka Ringwald typedef struct { 587da2c1baSMilanka Ringwald btstack_linked_item_t item; 5976cdba3eSMilanka Ringwald uint16_t start_handle; 607da2c1baSMilanka Ringwald uint16_t value_handle; 6176cdba3eSMilanka Ringwald uint16_t end_handle; 6276cdba3eSMilanka Ringwald uint16_t properties; 637da2c1baSMilanka Ringwald uint16_t uuid16; 647da2c1baSMilanka Ringwald // uint8_t uuid128[16]; 657da2c1baSMilanka Ringwald btstack_linked_list_t descriptors; 6676cdba3eSMilanka Ringwald 6776cdba3eSMilanka Ringwald uint8_t * value_buffer; 6876cdba3eSMilanka Ringwald uint16_t value_len; 6976cdba3eSMilanka Ringwald 7076cdba3eSMilanka Ringwald gatt_client_notification_t * notification; 717da2c1baSMilanka Ringwald } mock_gatt_client_characteristic_t; 727da2c1baSMilanka Ringwald 737da2c1baSMilanka Ringwald typedef struct { 747da2c1baSMilanka Ringwald btstack_linked_item_t item; 7576cdba3eSMilanka Ringwald uint16_t handle; 767da2c1baSMilanka Ringwald uint16_t uuid16; 777da2c1baSMilanka Ringwald // uint8_t uuid128[16]; 7876cdba3eSMilanka Ringwald 7976cdba3eSMilanka Ringwald uint8_t * value_buffer; 8076cdba3eSMilanka Ringwald uint16_t value_len; 817da2c1baSMilanka Ringwald } mock_gatt_client_characteristic_descriptor_t; 827da2c1baSMilanka Ringwald 837da2c1baSMilanka Ringwald 840f7fd6c1SMilanka Ringwald void mock_gatt_client_reset(void); 850f7fd6c1SMilanka Ringwald 86*ec1a0daeSMilanka Ringwald void mock_gatt_client_set_att_error_discover_primary_services(void); 87*ec1a0daeSMilanka Ringwald void mock_gatt_client_set_att_error_discover_characteristics(void); 88*ec1a0daeSMilanka Ringwald void mock_gatt_client_set_att_error_discover_characteristic_descriptors(void); 89*ec1a0daeSMilanka Ringwald 9076cdba3eSMilanka Ringwald mock_gatt_client_service_t * mock_gatt_client_add_primary_service_uuid16(uint16_t service_uuid); 9176cdba3eSMilanka Ringwald mock_gatt_client_characteristic_t * mock_gatt_client_add_characteristic_uuid16(uint16_t characteristic_uuid, uint16_t properties); 9276cdba3eSMilanka Ringwald mock_gatt_client_characteristic_descriptor_t * mock_gatt_client_add_characteristic_descriptor_uuid16(uint16_t descriptor_uuid); 9376cdba3eSMilanka Ringwald 9476cdba3eSMilanka Ringwald void mock_gatt_client_set_characteristic_value(mock_gatt_client_characteristic_descriptor_t * descriptor, uint8_t * value_buffer, uint16_t value_len); 957da2c1baSMilanka Ringwald 96af770404SMilanka Ringwald void mock_gatt_client_run(void); 9776cdba3eSMilanka Ringwald void mock_gatt_client_dump_services(void); 980f7fd6c1SMilanka Ringwald 990f7fd6c1SMilanka Ringwald #if defined __cplusplus 1000f7fd6c1SMilanka Ringwald } 1010f7fd6c1SMilanka Ringwald #endif 1020f7fd6c1SMilanka Ringwald 1030f7fd6c1SMilanka Ringwald #endif 1040f7fd6c1SMilanka Ringwald 105