| /* |
| * Copyright (c) 2022 Vestas Wind Systems A/S |
| * Copyright (c) 2019 Alexander Wachter |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/device.h> |
| #include <zephyr/drivers/can.h> |
| #include <zephyr/kernel.h> |
| |
| /** |
| * Test bitrates in bits/second. |
| */ |
| #define TEST_BITRATE_1 125000 |
| #define TEST_BITRATE_2 250000 |
| #define TEST_BITRATE_3 1000000 |
| |
| /** |
| * Test sample points in per mille. |
| */ |
| #define TEST_SAMPLE_POINT 875 |
| #define TEST_SAMPLE_POINT_2 750 |
| |
| /** |
| * @brief Test timeouts. |
| */ |
| #define TEST_SEND_TIMEOUT K_MSEC(100) |
| #define TEST_RECEIVE_TIMEOUT K_MSEC(100) |
| #define TEST_RECOVER_TIMEOUT K_MSEC(100) |
| |
| /** |
| * @brief Standard (11-bit) CAN IDs and masks used for testing. |
| */ |
| #define TEST_CAN_STD_ID_1 0x555 |
| #define TEST_CAN_STD_ID_2 0x565 |
| #define TEST_CAN_STD_MASK_ID_1 0x55A |
| #define TEST_CAN_STD_MASK_ID_2 0x56A |
| #define TEST_CAN_STD_MASK 0x7F0 |
| #define TEST_CAN_SOME_STD_ID 0x123 |
| |
| /** |
| * @brief Extended (29-bit) CAN IDs and masks used for testing. |
| */ |
| #define TEST_CAN_EXT_ID_1 0x15555555 |
| #define TEST_CAN_EXT_ID_2 0x15555565 |
| #define TEST_CAN_EXT_MASK_ID_1 0x1555555A |
| #define TEST_CAN_EXT_MASK_ID_2 0x1555556A |
| #define TEST_CAN_EXT_MASK 0x1FFFFFF0 |
| |
| /** |
| * @brief Common variables. |
| */ |
| extern ZTEST_DMEM const struct device *const can_dev; |
| extern ZTEST_DMEM const struct device *const can_phy; |
| extern struct k_sem rx_callback_sem; |
| extern struct k_sem tx_callback_sem; |
| extern struct k_msgq can_msgq; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID frame 1. |
| */ |
| extern const struct can_frame test_std_frame_1; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID frame 2. |
| */ |
| extern const struct can_frame test_std_frame_2; |
| |
| /** |
| * @brief Extended (29-bit) CAN ID frame 1. |
| */ |
| extern const struct can_frame test_ext_frame_1; |
| |
| /** |
| * @brief Extended (29-bit) CAN ID frame 1. |
| */ |
| extern const struct can_frame test_ext_frame_2; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID RTR frame 1. |
| */ |
| extern const struct can_frame test_std_rtr_frame_1; |
| |
| /** |
| * @brief Extended (29-bit) CAN ID RTR frame 1. |
| */ |
| extern const struct can_frame test_ext_rtr_frame_1; |
| |
| #ifdef CONFIG_CAN_FD_MODE |
| /** |
| * @brief Standard (11-bit) CAN ID frame 1 with CAN FD payload. |
| */ |
| extern const struct can_frame test_std_fdf_frame_1; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID frame 2 with CAN FD payload. |
| */ |
| extern const struct can_frame test_std_fdf_frame_2; |
| #endif /* CONFIG_CAN_FD_MODE */ |
| |
| /** |
| * @brief Standard (11-bit) CAN ID filter 1. This filter matches |
| * ``test_std_frame_1`` and ``test_std_fdf_frame_1``. |
| */ |
| extern const struct can_filter test_std_filter_1; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID filter 2. This filter matches |
| * ``test_std_frame_2`` and ``test_std_fdf_frame_2``. |
| */ |
| extern const struct can_filter test_std_filter_2; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID masked filter 1. This filter matches |
| * ``test_std_frame_1``. |
| */ |
| extern const struct can_filter test_std_masked_filter_1; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID masked filter 2. This filter matches |
| * ``test_std_frame_2``. |
| */ |
| extern const struct can_filter test_std_masked_filter_2; |
| |
| /** |
| * @brief Extended (29-bit) CAN ID filter 1. This filter matches |
| * ``test_ext_frame_1``. |
| */ |
| extern const struct can_filter test_ext_filter_1; |
| |
| /** |
| * @brief Extended (29-bit) CAN ID filter 2. This filter matches |
| * ``test_ext_frame_2``. |
| */ |
| extern const struct can_filter test_ext_filter_2; |
| |
| /** |
| * @brief Extended (29-bit) CAN ID masked filter 1. This filter matches |
| * ``test_ext_frame_1``. |
| */ |
| extern const struct can_filter test_ext_masked_filter_1; |
| |
| /** |
| * @brief Extended (29-bit) CAN ID masked filter 2. This filter matches |
| * ``test_ext_frame_2``. |
| */ |
| extern const struct can_filter test_ext_masked_filter_2; |
| |
| /** |
| * @brief Standard (11-bit) CAN ID filter. This filter matches |
| * ``TEST_CAN_SOME_STD_ID``. |
| */ |
| extern const struct can_filter test_std_some_filter; |
| |
| /** |
| * @brief Assert that two CAN frames are equal given a CAN ID mask. |
| * |
| * @param frame1 First CAN frame. |
| * @param frame2 Second CAN frame. |
| * @param id_mask CAN ID mask. |
| */ |
| void assert_frame_equal(const struct can_frame *frame1, |
| const struct can_frame *frame2, |
| uint32_t id_mask); |