1 /** 2 * Common functions and helpers for BSIM GATT tests 3 * 4 * Copyright (c) 2022 Nordic Semiconductor ASA 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 */ 8 9 #include <zephyr/kernel.h> 10 11 #include "bs_types.h" 12 #include "bs_tracing.h" 13 #include "time_machine.h" 14 #include "bstests.h" 15 16 #include <zephyr/types.h> 17 #include <stddef.h> 18 #include <errno.h> 19 20 #include <zephyr/bluetooth/bluetooth.h> 21 #include <zephyr/bluetooth/hci.h> 22 #include <zephyr/bluetooth/conn.h> 23 #include <zephyr/bluetooth/uuid.h> 24 #include <zephyr/bluetooth/gatt.h> 25 26 extern enum bst_result_t bst_result; 27 28 #define WAIT_TIME (60 * 1e6) /*seconds*/ 29 30 #define CREATE_FLAG(flag) static atomic_t flag = (atomic_t)false 31 #define FORCE_FLAG(flag, val) (void)atomic_set(&flag, (atomic_t)val) 32 #define SET_FLAG(flag) (void)atomic_set(&flag, (atomic_t)true) 33 #define UNSET_FLAG(flag) (void)atomic_set(&flag, (atomic_t)false) 34 #define WAIT_FOR_FLAG(flag) \ 35 while (!(bool)atomic_get(&flag)) { \ 36 (void)k_sleep(K_MSEC(1)); \ 37 } 38 #define WAIT_FOR_FLAG_UNSET(flag) \ 39 while ((bool)atomic_get(&flag)) { \ 40 (void)k_sleep(K_MSEC(1)); \ 41 } 42 43 #define FAIL(...) \ 44 do { \ 45 bst_result = Failed; \ 46 bs_trace_error_time_line(__VA_ARGS__); \ 47 } while (0) 48 49 #define PASS(...) \ 50 do { \ 51 bst_result = Passed; \ 52 bs_trace_info_time(1, __VA_ARGS__); \ 53 } while (0) 54 55 #define CHRC_SIZE 10 56 #define LONG_CHRC_SIZE 40 57 58 #define TEST_SERVICE_UUID \ 59 BT_UUID_DECLARE_128(0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, \ 60 0x07, 0x08, 0x09, 0x00, 0x00) 61 62 #define TEST_CHRC_UUID \ 63 BT_UUID_DECLARE_128(0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, \ 64 0x07, 0x08, 0x09, 0xFF, 0x00) 65 66 #define TEST_LONG_CHRC_UUID \ 67 BT_UUID_DECLARE_128(0x01, 0x23, 0x45, 0x67, 0x89, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, \ 68 0x07, 0x08, 0x09, 0xFF, 0x11) 69 70 void test_tick(bs_time_t HW_device_time); 71 void test_init(void); 72 73 #define NOTIFICATION_COUNT 10 74 BUILD_ASSERT(NOTIFICATION_COUNT % 2 == 0); 75