From 0b0c01c9424108fe4b494865f98972f960539ae2 Mon Sep 17 00:00:00 2001 From: Milanka Ringwald Date: Fri, 25 Sep 2020 11:33:05 +0200 Subject: [PATCH] test/mock: start reusable mock library --- test/mock/mock_att_server.c | 87 +++++++++++++++++++++++++++++++++++++ test/mock/mock_att_server.h | 59 +++++++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 test/mock/mock_att_server.c create mode 100644 test/mock/mock_att_server.h diff --git a/test/mock/mock_att_server.c b/test/mock/mock_att_server.c new file mode 100644 index 000000000..d06910741 --- /dev/null +++ b/test/mock/mock_att_server.c @@ -0,0 +1,87 @@ +#include +#include +#include + +#include "hci.h" +#include "l2cap.h" + +#include "ble/att_db.h" +#include "ble/att_server.h" +#include "btstack_debug.h" +#include "bluetooth.h" + +#include "mock_att_server.h" + +#include "CppUTest/TestHarness.h" +#include "CppUTestExt/MockSupport.h" + +static att_service_handler_t * service; + +att_service_handler_t * mock_att_server_get_service(void){ + return service; +} + +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){ + btstack_assert(service != NULL); + btstack_assert(service->read_callback != NULL); + return (service->read_callback)(con_handle, attribute_handle, offset, buffer, buffer_size); +} + +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){ + btstack_assert(service != NULL); + btstack_assert(service->write_callback != NULL); + return (service->write_callback)(con_handle, attribute_handle, transaction_mode, offset, (uint8_t *) buffer, buffer_size); +} + +void att_server_register_service_handler(att_service_handler_t * handler){ + service = handler; +} + +uint16_t att_server_get_mtu(hci_con_handle_t con_handle){ + UNUSED(con_handle); + mock().actualCall("att_server_get_mtu"); + return ATT_DEFAULT_MTU; +} + +int att_server_indicate(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ + UNUSED(con_handle); + UNUSED(attribute_handle); + UNUSED(value); + UNUSED(value_len); + mock().actualCall("att_server_indicate"); + return ERROR_CODE_SUCCESS; +} + +int att_server_notify(hci_con_handle_t con_handle, uint16_t attribute_handle, const uint8_t *value, uint16_t value_len){ + UNUSED(con_handle); + UNUSED(attribute_handle); + UNUSED(value); + UNUSED(value_len); + mock().actualCall("att_server_notify"); + return ERROR_CODE_SUCCESS; +} + +int att_server_register_can_send_now_callback(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ + UNUSED(callback_registration); + UNUSED(con_handle); + mock().actualCall("att_server_register_can_send_now_callback"); + return ERROR_CODE_SUCCESS; +} + +int att_server_request_to_send_notification(btstack_context_callback_registration_t * callback_registration, hci_con_handle_t con_handle){ + UNUSED(callback_registration); + UNUSED(con_handle); + mock().actualCall("att_server_request_to_send_notification"); + return ERROR_CODE_SUCCESS; +} + +void hci_add_event_handler(btstack_packet_callback_registration_t * callback_handler){ + UNUSED(callback_handler); +} + +uint16_t l2cap_max_mtu(void){ + return HCI_ACL_PAYLOAD_SIZE - L2CAP_HEADER_SIZE; +} + +void l2cap_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size)){ +} \ No newline at end of file diff --git a/test/mock/mock_att_server.h b/test/mock/mock_att_server.h new file mode 100644 index 000000000..eb7b54c92 --- /dev/null +++ b/test/mock/mock_att_server.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2020 BlueKitchen GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holders nor the names of + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * 4. Any redistribution, use, or modification is done solely for + * personal benefit and not for any commercial purpose or for + * monetary gain. + * + * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS + * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Please inquire about commercial licensing options at + * contact@bluekitchen-gmbh.com + * + */ +#ifndef MOCK_ATT_SERVER_H +#define MOCK_ATT_SERVER_H + +#include + +#if defined __cplusplus +extern "C" { +#endif + +#include "ble/att_db.h" + +att_service_handler_t * mock_att_server_get_service(void); + +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); + +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); + +#if defined __cplusplus +} +#endif + +#endif +