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
mock_att_server_get_service(void)210b0c01c9SMilanka Ringwald att_service_handler_t * mock_att_server_get_service(void){
220b0c01c9SMilanka Ringwald return service;
230b0c01c9SMilanka Ringwald }
240b0c01c9SMilanka Ringwald
mock_deinit(void)250f9df0abSMilanka Ringwald void mock_deinit(void){
260f9df0abSMilanka Ringwald mock().clear();
270f9df0abSMilanka Ringwald mock_callback_registration = NULL;
280f9df0abSMilanka Ringwald service = NULL;
290f9df0abSMilanka Ringwald }
300f9df0abSMilanka Ringwald
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)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
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)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
att_server_register_service_handler(att_service_handler_t * handler)430b0c01c9SMilanka Ringwald void att_server_register_service_handler(att_service_handler_t * handler){
440b0c01c9SMilanka Ringwald service = handler;
450b0c01c9SMilanka Ringwald }
460b0c01c9SMilanka Ringwald
mock_att_service_trigger_can_send_now(void)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
att_server_get_mtu(hci_con_handle_t con_handle)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
att_server_indicate(hci_con_handle_t con_handle,uint16_t attribute_handle,const uint8_t * value,uint16_t value_len)586f03ab7eSMatthias Ringwald uint8_t 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
att_server_notify(hci_con_handle_t con_handle,uint16_t attribute_handle,const uint8_t * value,uint16_t value_len)676f03ab7eSMatthias Ringwald uint8_t 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
att_server_register_can_send_now_callback(btstack_context_callback_registration_t * callback_registration,hci_con_handle_t con_handle)766f03ab7eSMatthias Ringwald uint8_t 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
att_server_request_to_send_notification(btstack_context_callback_registration_t * callback_registration,hci_con_handle_t con_handle)856f03ab7eSMatthias Ringwald uint8_t 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
att_server_request_to_send_indication(btstack_context_callback_registration_t * callback_registration,hci_con_handle_t con_handle)92*d2221de8SMatthias Ringwald uint8_t att_server_request_to_send_indication(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){
93*d2221de8SMatthias Ringwald UNUSED(callback_registration);
94*d2221de8SMatthias Ringwald UNUSED(con_handle);
95*d2221de8SMatthias Ringwald mock().actualCall("att_server_request_to_send_indication");
96*d2221de8SMatthias Ringwald return ERROR_CODE_SUCCESS;
97*d2221de8SMatthias Ringwald }
98*d2221de8SMatthias Ringwald
hci_add_event_handler(btstack_packet_callback_registration_t * callback_handler)990b0c01c9SMilanka Ringwald void hci_add_event_handler(btstack_packet_callback_registration_t * callback_handler){
1000b0c01c9SMilanka Ringwald UNUSED(callback_handler);
1010b0c01c9SMilanka Ringwald }
1020b0c01c9SMilanka Ringwald
l2cap_add_event_handler(btstack_packet_callback_registration_t * callback_handler)1031a47f80bSMatthias Ringwald void l2cap_add_event_handler(btstack_packet_callback_registration_t * callback_handler){
1041a47f80bSMatthias Ringwald UNUSED(callback_handler);
1051a47f80bSMatthias Ringwald }
1061a47f80bSMatthias Ringwald
l2cap_max_mtu(void)1070b0c01c9SMilanka Ringwald uint16_t l2cap_max_mtu(void){
1080b0c01c9SMilanka Ringwald return HCI_ACL_PAYLOAD_SIZE - L2CAP_HEADER_SIZE;
1090b0c01c9SMilanka Ringwald }
1100b0c01c9SMilanka Ringwald
l2cap_register_packet_handler(void (* handler)(uint8_t packet_type,uint16_t channel,uint8_t * packet,uint16_t size))1110b0c01c9SMilanka Ringwald void l2cap_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size)){
1120b0c01c9SMilanka Ringwald }