xref: /btstack/test/mock/mock_gatt_client.h (revision 76cdba3e40653998428b9e590094c54620ca56b2)
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