xref: /btstack/test/mock/mock_att_server.c (revision 1a47f80bef0892ee6f95649bcb3cf9710e6df32a)
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 }