This test verifies the l2cap MPS workaround: when the other side (non-zephyr host) sends PDUs that are < MPS. The DUT is a host, while the Tester is a thin layer over the controller, allowing fine control over l2cap packet contents. Note that this test fails as-is. It is fixed by the next commits in the PR. Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
/*
|
|
* Copyright (c) 2023 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "bs_tracing.h"
|
|
#include "bs_types.h"
|
|
#include "bstests.h"
|
|
|
|
#define BS_SECONDS(dur_sec) ((bs_time_t)dur_sec * USEC_PER_SEC)
|
|
#define TEST_TIMEOUT_SIMULATED BS_SECONDS(30)
|
|
|
|
extern enum bst_result_t bst_result;
|
|
|
|
#define DECLARE_FLAG(flag) extern atomic_t flag
|
|
#define DEFINE_FLAG(flag) atomic_t flag = (atomic_t) false
|
|
#define SET_FLAG(flag) (void)atomic_set(&flag, (atomic_t) true)
|
|
#define UNSET_FLAG(flag) (void)atomic_set(&flag, (atomic_t) false)
|
|
|
|
#define WAIT_FOR_FLAG(flag) \
|
|
while (!(bool)atomic_get(&flag)) { \
|
|
(void)k_sleep(K_MSEC(1)); \
|
|
}
|
|
#define WAIT_FOR_FLAG_UNSET(flag) \
|
|
while ((bool)atomic_get(&flag)) { \
|
|
(void)k_sleep(K_MSEC(1)); \
|
|
}
|
|
#define TAKE_FLAG(flag) \
|
|
while (!(bool)atomic_cas(&flag, true, false)) { \
|
|
(void)k_sleep(K_MSEC(1)); \
|
|
}
|
|
|
|
#define ASSERT(expr, ...) \
|
|
do { \
|
|
if (!(expr)) { \
|
|
FAIL(__VA_ARGS__); \
|
|
} \
|
|
} while (0)
|
|
|
|
#define FAIL(...) \
|
|
do { \
|
|
bst_result = Failed; \
|
|
bs_trace_error_time_line(__VA_ARGS__); \
|
|
} while (0)
|
|
|
|
#define PASS(...) \
|
|
do { \
|
|
bst_result = Passed; \
|
|
bs_trace_info_time(1, __VA_ARGS__); \
|
|
} while (0)
|