1 #include <stdint.h> 2 #include <stdio.h> 3 #include <string.h> 4 5 #include "hci.h" 6 #include "l2cap.h" 7 8 #include "ble/att_db.h" 9 #include "ble/att_server.h" 10 #include "btstack_debug.h" 11 #include "bluetooth.h" 12 13 #include "mock_att_server.h" 14 15 #include "CppUTest/TestHarness.h" 16 #include "CppUTestExt/MockSupport.h" 17 18 static att_service_handler_t * service; 19 static btstack_context_callback_registration_t * mock_callback_registration; 20 21 att_service_handler_t * mock_att_server_get_service(void){ 22 return service; 23 } 24 25 void mock_deinit(void){ 26 mock().clear(); 27 mock_callback_registration = NULL; 28 service = NULL; 29 } 30 31 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){ 32 btstack_assert(service != NULL); 33 btstack_assert(service->read_callback != NULL); 34 return (service->read_callback)(con_handle, attribute_handle, offset, buffer, buffer_size); 35 } 36 37 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){ 38 btstack_assert(service != NULL); 39 btstack_assert(service->write_callback != NULL); 40 return (service->write_callback)(con_handle, attribute_handle, transaction_mode, offset, (uint8_t *) buffer, buffer_size); 41 } 42 43 void att_server_register_service_handler(att_service_handler_t * handler){ 44 service = handler; 45 } 46 47 void mock_att_service_trigger_can_send_now(void){ 48 btstack_assert(mock_callback_registration != NULL); 49 (*mock_callback_registration->callback)(mock_callback_registration->context); 50 } 51 52 uint16_t att_server_get_mtu(hci_con_handle_t con_handle){ 53 UNUSED(con_handle); 54 mock().actualCall("att_server_get_mtu"); 55 return ATT_DEFAULT_MTU; 56 } 57 58 uint8_t att_server_indicate(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ 59 UNUSED(con_handle); 60 UNUSED(attribute_handle); 61 UNUSED(value); 62 UNUSED(value_len); 63 mock().actualCall("att_server_indicate"); 64 return ERROR_CODE_SUCCESS; 65 } 66 67 uint8_t att_server_notify(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ 68 UNUSED(con_handle); 69 UNUSED(attribute_handle); 70 UNUSED(value); 71 UNUSED(value_len); 72 mock().actualCall("att_server_notify"); 73 return ERROR_CODE_SUCCESS; 74 } 75 76 uint8_t att_server_register_can_send_now_callback(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ 77 UNUSED(callback_registration); 78 UNUSED(con_handle); 79 mock_callback_registration = callback_registration; 80 81 mock().actualCall("att_server_register_can_send_now_callback"); 82 return ERROR_CODE_SUCCESS; 83 } 84 85 uint8_t att_server_request_to_send_notification(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ 86 UNUSED(callback_registration); 87 UNUSED(con_handle); 88 mock().actualCall("att_server_request_to_send_notification"); 89 return ERROR_CODE_SUCCESS; 90 } 91 92 uint8_t att_server_request_to_send_indication(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ 93 UNUSED(callback_registration); 94 UNUSED(con_handle); 95 mock().actualCall("att_server_request_to_send_indication"); 96 return ERROR_CODE_SUCCESS; 97 } 98 99 void hci_add_event_handler(btstack_packet_callback_registration_t * callback_handler){ 100 UNUSED(callback_handler); 101 } 102 103 void l2cap_add_event_handler(btstack_packet_callback_registration_t * callback_handler){ 104 UNUSED(callback_handler); 105 } 106 107 uint16_t l2cap_max_mtu(void){ 108 return HCI_ACL_PAYLOAD_SIZE - L2CAP_HEADER_SIZE; 109 } 110 111 void l2cap_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size)){ 112 }