10b0c01c9SMilanka Ringwald #include <stdint.h> 20b0c01c9SMilanka Ringwald #include <stdio.h> 30b0c01c9SMilanka Ringwald #include <string.h> 40b0c01c9SMilanka Ringwald 50b0c01c9SMilanka Ringwald #include "hci.h" 60b0c01c9SMilanka Ringwald #include "l2cap.h" 70b0c01c9SMilanka Ringwald 80b0c01c9SMilanka Ringwald #include "ble/att_db.h" 90b0c01c9SMilanka Ringwald #include "ble/att_server.h" 100b0c01c9SMilanka Ringwald #include "btstack_debug.h" 110b0c01c9SMilanka Ringwald #include "bluetooth.h" 120b0c01c9SMilanka Ringwald 130b0c01c9SMilanka Ringwald #include "mock_att_server.h" 140b0c01c9SMilanka Ringwald 150b0c01c9SMilanka Ringwald #include "CppUTest/TestHarness.h" 160b0c01c9SMilanka Ringwald #include "CppUTestExt/MockSupport.h" 170b0c01c9SMilanka Ringwald 180b0c01c9SMilanka Ringwald static att_service_handler_t * service; 190f9df0abSMilanka Ringwald static btstack_context_callback_registration_t * mock_callback_registration; 200b0c01c9SMilanka Ringwald 210b0c01c9SMilanka Ringwald att_service_handler_t * mock_att_server_get_service(void){ 220b0c01c9SMilanka Ringwald return service; 230b0c01c9SMilanka Ringwald } 240b0c01c9SMilanka Ringwald 250f9df0abSMilanka Ringwald void mock_deinit(void){ 260f9df0abSMilanka Ringwald mock().clear(); 270f9df0abSMilanka Ringwald mock_callback_registration = NULL; 280f9df0abSMilanka Ringwald service = NULL; 290f9df0abSMilanka Ringwald } 300f9df0abSMilanka Ringwald 310b0c01c9SMilanka 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){ 320b0c01c9SMilanka Ringwald btstack_assert(service != NULL); 330b0c01c9SMilanka Ringwald btstack_assert(service->read_callback != NULL); 340b0c01c9SMilanka Ringwald return (service->read_callback)(con_handle, attribute_handle, offset, buffer, buffer_size); 350b0c01c9SMilanka Ringwald } 360b0c01c9SMilanka Ringwald 370b0c01c9SMilanka 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){ 380b0c01c9SMilanka Ringwald btstack_assert(service != NULL); 390b0c01c9SMilanka Ringwald btstack_assert(service->write_callback != NULL); 400b0c01c9SMilanka Ringwald return (service->write_callback)(con_handle, attribute_handle, transaction_mode, offset, (uint8_t *) buffer, buffer_size); 410b0c01c9SMilanka Ringwald } 420b0c01c9SMilanka Ringwald 430b0c01c9SMilanka Ringwald void att_server_register_service_handler(att_service_handler_t * handler){ 440b0c01c9SMilanka Ringwald service = handler; 450b0c01c9SMilanka Ringwald } 460b0c01c9SMilanka Ringwald 470f9df0abSMilanka Ringwald void mock_att_service_trigger_can_send_now(void){ 480f9df0abSMilanka Ringwald btstack_assert(mock_callback_registration != NULL); 490f9df0abSMilanka Ringwald (*mock_callback_registration->callback)(mock_callback_registration->context); 500f9df0abSMilanka Ringwald } 510f9df0abSMilanka Ringwald 520b0c01c9SMilanka Ringwald uint16_t att_server_get_mtu(hci_con_handle_t con_handle){ 530b0c01c9SMilanka Ringwald UNUSED(con_handle); 540b0c01c9SMilanka Ringwald mock().actualCall("att_server_get_mtu"); 550b0c01c9SMilanka Ringwald return ATT_DEFAULT_MTU; 560b0c01c9SMilanka Ringwald } 570b0c01c9SMilanka Ringwald 580b0c01c9SMilanka Ringwald int att_server_indicate(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ 590b0c01c9SMilanka Ringwald UNUSED(con_handle); 600b0c01c9SMilanka Ringwald UNUSED(attribute_handle); 610b0c01c9SMilanka Ringwald UNUSED(value); 620b0c01c9SMilanka Ringwald UNUSED(value_len); 630b0c01c9SMilanka Ringwald mock().actualCall("att_server_indicate"); 640b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 650b0c01c9SMilanka Ringwald } 660b0c01c9SMilanka Ringwald 670b0c01c9SMilanka Ringwald int att_server_notify(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ 680b0c01c9SMilanka Ringwald UNUSED(con_handle); 690b0c01c9SMilanka Ringwald UNUSED(attribute_handle); 700b0c01c9SMilanka Ringwald UNUSED(value); 710b0c01c9SMilanka Ringwald UNUSED(value_len); 720b0c01c9SMilanka Ringwald mock().actualCall("att_server_notify"); 730b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 740b0c01c9SMilanka Ringwald } 750b0c01c9SMilanka Ringwald 760b0c01c9SMilanka Ringwald int att_server_register_can_send_now_callback(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ 770b0c01c9SMilanka Ringwald UNUSED(callback_registration); 780b0c01c9SMilanka Ringwald UNUSED(con_handle); 790f9df0abSMilanka Ringwald mock_callback_registration = callback_registration; 800f9df0abSMilanka Ringwald 810b0c01c9SMilanka Ringwald mock().actualCall("att_server_register_can_send_now_callback"); 820b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 830b0c01c9SMilanka Ringwald } 840b0c01c9SMilanka Ringwald 850b0c01c9SMilanka Ringwald int att_server_request_to_send_notification(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ 860b0c01c9SMilanka Ringwald UNUSED(callback_registration); 870b0c01c9SMilanka Ringwald UNUSED(con_handle); 880b0c01c9SMilanka Ringwald mock().actualCall("att_server_request_to_send_notification"); 890b0c01c9SMilanka Ringwald return ERROR_CODE_SUCCESS; 900b0c01c9SMilanka Ringwald } 910b0c01c9SMilanka Ringwald 920b0c01c9SMilanka Ringwald void hci_add_event_handler(btstack_packet_callback_registration_t * callback_handler){ 930b0c01c9SMilanka Ringwald UNUSED(callback_handler); 940b0c01c9SMilanka Ringwald } 950b0c01c9SMilanka Ringwald 96*1a47f80bSMatthias Ringwald void l2cap_add_event_handler(btstack_packet_callback_registration_t * callback_handler){ 97*1a47f80bSMatthias Ringwald UNUSED(callback_handler); 98*1a47f80bSMatthias Ringwald } 99*1a47f80bSMatthias Ringwald 1000b0c01c9SMilanka Ringwald uint16_t l2cap_max_mtu(void){ 1010b0c01c9SMilanka Ringwald return HCI_ACL_PAYLOAD_SIZE - L2CAP_HEADER_SIZE; 1020b0c01c9SMilanka Ringwald } 1030b0c01c9SMilanka Ringwald 1040b0c01c9SMilanka Ringwald void l2cap_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size)){ 1050b0c01c9SMilanka Ringwald }