xref: /btstack/test/mock/mock_gatt_client.c (revision 0f7fd6c19b44e3fae3aaf3caf2c11dd07533fe4c)
1*0f7fd6c1SMilanka Ringwald #include <stdint.h>
2*0f7fd6c1SMilanka Ringwald #include <stdio.h>
3*0f7fd6c1SMilanka Ringwald #include <string.h>
4*0f7fd6c1SMilanka Ringwald 
5*0f7fd6c1SMilanka Ringwald #include "mock_gatt_client.h"
6*0f7fd6c1SMilanka Ringwald 
7*0f7fd6c1SMilanka Ringwald #include "CppUTest/TestHarness.h"
8*0f7fd6c1SMilanka Ringwald #include "CppUTestExt/MockSupport.h"
9*0f7fd6c1SMilanka Ringwald 
10*0f7fd6c1SMilanka Ringwald static btstack_timer_source_t * btstack_timer = NULL;
11*0f7fd6c1SMilanka Ringwald 
12*0f7fd6c1SMilanka Ringwald void mock_gatt_client_reset(void){
13*0f7fd6c1SMilanka Ringwald }
14*0f7fd6c1SMilanka Ringwald void mock_gatt_client_add_primary_service(uint16_t service_uuid){
15*0f7fd6c1SMilanka Ringwald }
16*0f7fd6c1SMilanka Ringwald void mock_gatt_client_add_characteristic(uint16_t characteristic_uuid){
17*0f7fd6c1SMilanka Ringwald }
18*0f7fd6c1SMilanka Ringwald void mock_gatt_client_add_characteristic_descriptor(uint16_t descriptor_uuid){
19*0f7fd6c1SMilanka Ringwald }
20*0f7fd6c1SMilanka Ringwald 
21*0f7fd6c1SMilanka Ringwald uint8_t gatt_client_read_value_of_characteristic(btstack_packet_handler_t callback, hci_con_handle_t con_handle, gatt_client_characteristic_t * characteristic){
22*0f7fd6c1SMilanka Ringwald     return ERROR_CODE_SUCCESS;
23*0f7fd6c1SMilanka Ringwald }
24*0f7fd6c1SMilanka Ringwald 
25*0f7fd6c1SMilanka Ringwald uint8_t gatt_client_discover_primary_services_by_uuid16(btstack_packet_handler_t callback, hci_con_handle_t con_handle, uint16_t uuid16){
26*0f7fd6c1SMilanka Ringwald     return ERROR_CODE_SUCCESS;
27*0f7fd6c1SMilanka Ringwald }
28*0f7fd6c1SMilanka Ringwald 
29*0f7fd6c1SMilanka Ringwald uint8_t gatt_client_discover_characteristics_for_handle_range_by_uuid16(btstack_packet_handler_t callback, hci_con_handle_t con_handle, uint16_t start_handle, uint16_t end_handle, uint16_t uuid16){
30*0f7fd6c1SMilanka Ringwald     return ERROR_CODE_SUCCESS;
31*0f7fd6c1SMilanka Ringwald }
32*0f7fd6c1SMilanka Ringwald 
33*0f7fd6c1SMilanka Ringwald uint8_t gatt_client_discover_characteristic_descriptors(btstack_packet_handler_t callback, hci_con_handle_t con_handle, gatt_client_characteristic_t * characteristic){
34*0f7fd6c1SMilanka Ringwald     return ERROR_CODE_SUCCESS;
35*0f7fd6c1SMilanka Ringwald }
36*0f7fd6c1SMilanka Ringwald 
37*0f7fd6c1SMilanka Ringwald uint8_t gatt_client_read_value_of_characteristic_using_value_handle(btstack_packet_handler_t callback, hci_con_handle_t con_handle, uint16_t value_handle){
38*0f7fd6c1SMilanka Ringwald     return ERROR_CODE_SUCCESS;
39*0f7fd6c1SMilanka Ringwald }
40*0f7fd6c1SMilanka Ringwald 
41*0f7fd6c1SMilanka Ringwald uint8_t gatt_client_write_client_characteristic_configuration(btstack_packet_handler_t callback, hci_con_handle_t con_handle, gatt_client_characteristic_t * characteristic, uint16_t configuration){
42*0f7fd6c1SMilanka Ringwald     return ERROR_CODE_SUCCESS;
43*0f7fd6c1SMilanka Ringwald }
44*0f7fd6c1SMilanka Ringwald 
45*0f7fd6c1SMilanka Ringwald void gatt_client_listen_for_characteristic_value_updates(gatt_client_notification_t * notification, btstack_packet_handler_t callback, hci_con_handle_t con_handle, gatt_client_characteristic_t * characteristic){
46*0f7fd6c1SMilanka Ringwald }
47*0f7fd6c1SMilanka Ringwald 
48*0f7fd6c1SMilanka Ringwald // copied from gatt_client.c
49*0f7fd6c1SMilanka Ringwald void gatt_client_deserialize_service(const uint8_t *packet, int offset, gatt_client_service_t * service){
50*0f7fd6c1SMilanka Ringwald     service->start_group_handle = little_endian_read_16(packet, offset);
51*0f7fd6c1SMilanka Ringwald     service->end_group_handle = little_endian_read_16(packet, offset + 2);
52*0f7fd6c1SMilanka Ringwald     reverse_128(&packet[offset + 4], service->uuid128);
53*0f7fd6c1SMilanka Ringwald     if (uuid_has_bluetooth_prefix(service->uuid128)){
54*0f7fd6c1SMilanka Ringwald         service->uuid16 = big_endian_read_32(service->uuid128, 0);
55*0f7fd6c1SMilanka Ringwald     } else {
56*0f7fd6c1SMilanka Ringwald         service->uuid16 = 0;
57*0f7fd6c1SMilanka Ringwald     }
58*0f7fd6c1SMilanka Ringwald }
59*0f7fd6c1SMilanka Ringwald 
60*0f7fd6c1SMilanka Ringwald // copied from gatt_client.c
61*0f7fd6c1SMilanka Ringwald void gatt_client_deserialize_characteristic(const uint8_t * packet, int offset, gatt_client_characteristic_t * characteristic){
62*0f7fd6c1SMilanka Ringwald     characteristic->start_handle = little_endian_read_16(packet, offset);
63*0f7fd6c1SMilanka Ringwald     characteristic->value_handle = little_endian_read_16(packet, offset + 2);
64*0f7fd6c1SMilanka Ringwald     characteristic->end_handle = little_endian_read_16(packet, offset + 4);
65*0f7fd6c1SMilanka Ringwald     characteristic->properties = little_endian_read_16(packet, offset + 6);
66*0f7fd6c1SMilanka Ringwald     reverse_128(&packet[offset+8], characteristic->uuid128);
67*0f7fd6c1SMilanka Ringwald     if (uuid_has_bluetooth_prefix(characteristic->uuid128)){
68*0f7fd6c1SMilanka Ringwald         characteristic->uuid16 = big_endian_read_32(characteristic->uuid128, 0);
69*0f7fd6c1SMilanka Ringwald     } else {
70*0f7fd6c1SMilanka Ringwald         characteristic->uuid16 = 0;
71*0f7fd6c1SMilanka Ringwald     }
72*0f7fd6c1SMilanka Ringwald }
73*0f7fd6c1SMilanka Ringwald 
74*0f7fd6c1SMilanka Ringwald // copied from gatt_client.c
75*0f7fd6c1SMilanka Ringwald void gatt_client_deserialize_characteristic_descriptor(const uint8_t * packet, int offset, gatt_client_characteristic_descriptor_t * descriptor){
76*0f7fd6c1SMilanka Ringwald     descriptor->handle = little_endian_read_16(packet, offset);
77*0f7fd6c1SMilanka Ringwald     reverse_128(&packet[offset+2], descriptor->uuid128);
78*0f7fd6c1SMilanka Ringwald     if (uuid_has_bluetooth_prefix(descriptor->uuid128)){
79*0f7fd6c1SMilanka Ringwald         descriptor->uuid16 = big_endian_read_32(descriptor->uuid128, 0);
80*0f7fd6c1SMilanka Ringwald     } else {
81*0f7fd6c1SMilanka Ringwald         descriptor->uuid16 = 0;
82*0f7fd6c1SMilanka Ringwald     }
83*0f7fd6c1SMilanka Ringwald }
84*0f7fd6c1SMilanka Ringwald 
85*0f7fd6c1SMilanka Ringwald void gatt_client_stop_listening_for_characteristic_value_updates(gatt_client_notification_t * notification){
86*0f7fd6c1SMilanka Ringwald }
87*0f7fd6c1SMilanka Ringwald 
88*0f7fd6c1SMilanka Ringwald void btstack_run_loop_add_timer(btstack_timer_source_t * timer){
89*0f7fd6c1SMilanka Ringwald     btstack_timer = timer;
90*0f7fd6c1SMilanka Ringwald }
91*0f7fd6c1SMilanka Ringwald 
92*0f7fd6c1SMilanka Ringwald void * btstack_run_loop_get_timer_context(btstack_timer_source_t * timer){
93*0f7fd6c1SMilanka Ringwald     return btstack_timer;
94*0f7fd6c1SMilanka Ringwald }
95*0f7fd6c1SMilanka Ringwald 
96*0f7fd6c1SMilanka Ringwald int btstack_run_loop_remove_timer(btstack_timer_source_t * timer){
97*0f7fd6c1SMilanka Ringwald     btstack_timer = NULL;
98*0f7fd6c1SMilanka Ringwald     return 1;
99*0f7fd6c1SMilanka Ringwald }
100*0f7fd6c1SMilanka Ringwald 
101*0f7fd6c1SMilanka Ringwald void btstack_run_loop_set_timer(btstack_timer_source_t * timer, uint32_t timeout_in_ms){
102*0f7fd6c1SMilanka Ringwald }
103*0f7fd6c1SMilanka Ringwald 
104*0f7fd6c1SMilanka Ringwald void btstack_run_loop_set_timer_context(btstack_timer_source_t * timer, void * context){
105*0f7fd6c1SMilanka Ringwald }
106*0f7fd6c1SMilanka Ringwald 
107*0f7fd6c1SMilanka Ringwald void btstack_run_loop_set_timer_handler(btstack_timer_source_t * timer, void (*process)(btstack_timer_source_t * _timer)){
108*0f7fd6c1SMilanka Ringwald }
109*0f7fd6c1SMilanka Ringwald 
110