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