1*0b0c01c9SMilanka Ringwald #include <stdint.h> 2*0b0c01c9SMilanka Ringwald #include <stdio.h> 3*0b0c01c9SMilanka Ringwald #include <string.h> 4*0b0c01c9SMilanka Ringwald 5*0b0c01c9SMilanka Ringwald #include "hci.h" 6*0b0c01c9SMilanka Ringwald #include "l2cap.h" 7*0b0c01c9SMilanka Ringwald 8*0b0c01c9SMilanka Ringwald #include "ble/att_db.h" 9*0b0c01c9SMilanka Ringwald #include "ble/att_server.h" 10*0b0c01c9SMilanka Ringwald #include "btstack_debug.h" 11*0b0c01c9SMilanka Ringwald #include "bluetooth.h" 12*0b0c01c9SMilanka Ringwald 13*0b0c01c9SMilanka Ringwald #include "mock_att_server.h" 14*0b0c01c9SMilanka Ringwald 15*0b0c01c9SMilanka Ringwald #include "CppUTest/TestHarness.h" 16*0b0c01c9SMilanka Ringwald #include "CppUTestExt/MockSupport.h" 17*0b0c01c9SMilanka Ringwald 18*0b0c01c9SMilanka Ringwald static att_service_handler_t * service; 19*0b0c01c9SMilanka Ringwald 20*0b0c01c9SMilanka Ringwald att_service_handler_t * mock_att_server_get_service(void){ 21*0b0c01c9SMilanka Ringwald return service; 22*0b0c01c9SMilanka Ringwald } 23*0b0c01c9SMilanka Ringwald 24*0b0c01c9SMilanka Ringwald uint16_t mock_att_service_read_callback(hci_con_handle_t con_handle, uint16_t attribute_handle, uint16_t offset, uint8_t * buffer, uint16_t buffer_size){ 25*0b0c01c9SMilanka Ringwald btstack_assert(service != NULL); 26*0b0c01c9SMilanka Ringwald btstack_assert(service->read_callback != NULL); 27*0b0c01c9SMilanka Ringwald return (service->read_callback)(con_handle, attribute_handle, offset, buffer, buffer_size); 28*0b0c01c9SMilanka Ringwald } 29*0b0c01c9SMilanka Ringwald 30*0b0c01c9SMilanka Ringwald uint16_t mock_att_service_write_callback(hci_con_handle_t con_handle, uint16_t attribute_handle, uint16_t transaction_mode, uint16_t offset, const uint8_t *buffer, uint16_t buffer_size){ 31*0b0c01c9SMilanka Ringwald btstack_assert(service != NULL); 32*0b0c01c9SMilanka Ringwald btstack_assert(service->write_callback != NULL); 33*0b0c01c9SMilanka Ringwald return (service->write_callback)(con_handle, attribute_handle, transaction_mode, offset, (uint8_t *) buffer, buffer_size); 34*0b0c01c9SMilanka Ringwald } 35*0b0c01c9SMilanka Ringwald 36*0b0c01c9SMilanka Ringwald void att_server_register_service_handler(att_service_handler_t * handler){ 37*0b0c01c9SMilanka Ringwald service = handler; 38*0b0c01c9SMilanka Ringwald } 39*0b0c01c9SMilanka Ringwald 40*0b0c01c9SMilanka Ringwald uint16_t att_server_get_mtu(hci_con_handle_t con_handle){ 41*0b0c01c9SMilanka Ringwald UNUSED(con_handle); 42*0b0c01c9SMilanka Ringwald mock().actualCall("att_server_get_mtu"); 43*0b0c01c9SMilanka Ringwald return ATT_DEFAULT_MTU; 44*0b0c01c9SMilanka Ringwald } 45*0b0c01c9SMilanka Ringwald 46*0b0c01c9SMilanka Ringwald int att_server_indicate(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ 47*0b0c01c9SMilanka Ringwald UNUSED(con_handle); 48*0b0c01c9SMilanka Ringwald UNUSED(attribute_handle); 49*0b0c01c9SMilanka Ringwald UNUSED(value); 50*0b0c01c9SMilanka Ringwald UNUSED(value_len); 51*0b0c01c9SMilanka Ringwald mock().actualCall("att_server_indicate"); 52*0b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 53*0b0c01c9SMilanka Ringwald } 54*0b0c01c9SMilanka Ringwald 55*0b0c01c9SMilanka Ringwald int att_server_notify(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ 56*0b0c01c9SMilanka Ringwald UNUSED(con_handle); 57*0b0c01c9SMilanka Ringwald UNUSED(attribute_handle); 58*0b0c01c9SMilanka Ringwald UNUSED(value); 59*0b0c01c9SMilanka Ringwald UNUSED(value_len); 60*0b0c01c9SMilanka Ringwald mock().actualCall("att_server_notify"); 61*0b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 62*0b0c01c9SMilanka Ringwald } 63*0b0c01c9SMilanka Ringwald 64*0b0c01c9SMilanka Ringwald int att_server_register_can_send_now_callback(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ 65*0b0c01c9SMilanka Ringwald UNUSED(callback_registration); 66*0b0c01c9SMilanka Ringwald UNUSED(con_handle); 67*0b0c01c9SMilanka Ringwald mock().actualCall("att_server_register_can_send_now_callback"); 68*0b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 69*0b0c01c9SMilanka Ringwald } 70*0b0c01c9SMilanka Ringwald 71*0b0c01c9SMilanka Ringwald int att_server_request_to_send_notification(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ 72*0b0c01c9SMilanka Ringwald UNUSED(callback_registration); 73*0b0c01c9SMilanka Ringwald UNUSED(con_handle); 74*0b0c01c9SMilanka Ringwald mock().actualCall("att_server_request_to_send_notification"); 75*0b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 76*0b0c01c9SMilanka Ringwald } 77*0b0c01c9SMilanka Ringwald 78*0b0c01c9SMilanka Ringwald void hci_add_event_handler(btstack_packet_callback_registration_t * callback_handler){ 79*0b0c01c9SMilanka Ringwald UNUSED(callback_handler); 80*0b0c01c9SMilanka Ringwald } 81*0b0c01c9SMilanka Ringwald 82*0b0c01c9SMilanka Ringwald uint16_t l2cap_max_mtu(void){ 83*0b0c01c9SMilanka Ringwald return HCI_ACL_PAYLOAD_SIZE - L2CAP_HEADER_SIZE; 84*0b0c01c9SMilanka Ringwald } 85*0b0c01c9SMilanka Ringwald 86*0b0c01c9SMilanka Ringwald void l2cap_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size)){ 87*0b0c01c9SMilanka Ringwald }