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; 50*76cdba3eSMilanka Ringwald uint16_t start_group_handle; 51*76cdba3eSMilanka 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; 59*76cdba3eSMilanka Ringwald uint16_t start_handle; 607da2c1baSMilanka Ringwald uint16_t value_handle; 61*76cdba3eSMilanka Ringwald uint16_t end_handle; 62*76cdba3eSMilanka Ringwald uint16_t properties; 637da2c1baSMilanka Ringwald uint16_t uuid16; 647da2c1baSMilanka Ringwald // uint8_t uuid128[16]; 657da2c1baSMilanka Ringwald btstack_linked_list_t descriptors; 66*76cdba3eSMilanka Ringwald 67*76cdba3eSMilanka Ringwald uint8_t * value_buffer; 68*76cdba3eSMilanka Ringwald uint16_t value_len; 69*76cdba3eSMilanka Ringwald 70*76cdba3eSMilanka 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; 75*76cdba3eSMilanka Ringwald uint16_t handle; 767da2c1baSMilanka Ringwald uint16_t uuid16; 777da2c1baSMilanka Ringwald // uint8_t uuid128[16]; 78*76cdba3eSMilanka Ringwald 79*76cdba3eSMilanka Ringwald uint8_t * value_buffer; 80*76cdba3eSMilanka 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*76cdba3eSMilanka Ringwald mock_gatt_client_service_t * mock_gatt_client_add_primary_service_uuid16(uint16_t service_uuid); 87*76cdba3eSMilanka Ringwald mock_gatt_client_characteristic_t * mock_gatt_client_add_characteristic_uuid16(uint16_t characteristic_uuid, uint16_t properties); 88*76cdba3eSMilanka Ringwald mock_gatt_client_characteristic_descriptor_t * mock_gatt_client_add_characteristic_descriptor_uuid16(uint16_t descriptor_uuid); 89*76cdba3eSMilanka Ringwald 90*76cdba3eSMilanka Ringwald void mock_gatt_client_set_characteristic_value(mock_gatt_client_characteristic_descriptor_t * descriptor, uint8_t * value_buffer, uint16_t value_len); 917da2c1baSMilanka Ringwald 92af770404SMilanka Ringwald void mock_gatt_client_run(void); 93*76cdba3eSMilanka Ringwald void mock_gatt_client_dump_services(void); 940f7fd6c1SMilanka Ringwald 950f7fd6c1SMilanka Ringwald #if defined __cplusplus 960f7fd6c1SMilanka Ringwald } 970f7fd6c1SMilanka Ringwald #endif 980f7fd6c1SMilanka Ringwald 990f7fd6c1SMilanka Ringwald #endif 1000f7fd6c1SMilanka Ringwald 101