mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
54 lines
1.9 KiB
C
54 lines
1.9 KiB
C
|
/*
|
||
|
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*/
|
||
|
|
||
|
#include "freertos/ringbuf.h"
|
||
|
|
||
|
//Definitions used in multiple test cases
|
||
|
#define NO_OF_RB_TYPES 3
|
||
|
#define SMALL_ITEM_SIZE 8
|
||
|
#define ITEM_HDR_SIZE (sizeof(size_t) + sizeof(UBaseType_t))
|
||
|
#define MEDIUM_ITEM_SIZE ((3 * SMALL_ITEM_SIZE) >> 1) //12 bytes
|
||
|
#define BUFFER_SIZE 4 * (ITEM_HDR_SIZE + MEDIUM_ITEM_SIZE) //4Byte aligned size
|
||
|
|
||
|
#define CONT_DATA_LEN continuous_test_string_len()
|
||
|
//32-bit aligned size that guarantees a wrap around at some point
|
||
|
#define CONT_DATA_TEST_BUFF_LEN (((CONT_DATA_LEN/2) + 0x03) & ~0x3)
|
||
|
|
||
|
typedef struct {
|
||
|
RingbufHandle_t buffer;
|
||
|
RingbufferType_t type;
|
||
|
} task_args_t;
|
||
|
|
||
|
extern const uint8_t small_item[SMALL_ITEM_SIZE];
|
||
|
extern RingbufHandle_t buffer_handles[NO_OF_RB_TYPES];
|
||
|
extern SemaphoreHandle_t done_sem;
|
||
|
|
||
|
extern SemaphoreHandle_t tasks_done;
|
||
|
extern SemaphoreHandle_t tx_done;
|
||
|
extern SemaphoreHandle_t rx_done;
|
||
|
|
||
|
void setup(void);
|
||
|
|
||
|
void cleanup(void);
|
||
|
|
||
|
void read_from_buffer(RingbufHandle_t buffer, RingbufferType_t buf_type, size_t max_rec_size);
|
||
|
|
||
|
void send_to_buffer(RingbufHandle_t buffer, size_t max_item_size);
|
||
|
|
||
|
void send_item_and_check(RingbufHandle_t handle, const uint8_t *item, size_t item_size, TickType_t ticks_to_wait, bool in_isr);
|
||
|
|
||
|
void receive_check_and_return_item_no_split(RingbufHandle_t handle, const uint8_t *expected_data, size_t expected_size, TickType_t ticks_to_wait, bool in_isr);
|
||
|
|
||
|
void receive_check_and_return_item_allow_split(RingbufHandle_t handle, const uint8_t *expected_data, size_t expected_size, TickType_t ticks_to_wait, bool in_isr);
|
||
|
|
||
|
void receive_check_and_return_item_byte_buffer(RingbufHandle_t handle, const uint8_t *expected_data, size_t expected_size, TickType_t ticks_to_wait, bool in_isr);
|
||
|
|
||
|
void send_task(void *args);
|
||
|
|
||
|
void rec_task(void *args);
|
||
|
|
||
|
size_t continuous_test_string_len(void);
|