32#define TX_FRAME_QUEUE_SIZE 64
42#define TX_FRAME_MAX_SIZE_BYTE 2048
48#define TX_QUEUE_DECLARE_AND_INIT(var_name) \
49 TX_QUEUE_T var_name; \
50 uint8_t var_name##_buffer_data[TX_FRAME_QUEUE_SIZE * sizeof(TX_QUEUE_ENTRY_T)]; \
51 Ringbuffer var_name##_ringbuf; \
52 RbInit(&var_name##_ringbuf, var_name##_buffer_data, TX_FRAME_QUEUE_SIZE, \
53 sizeof(TX_QUEUE_ENTRY_T)); \
54 tx_queue_init(&var_name, &var_name##_ringbuf)
e2s_error_t
Common error codes returned by ether2ser modules.
Generic HDLC frame buffer descriptor.
Generic fixed-size ring buffer state.
One queued HDLC frame plus drain offset state.
TX_QUEUE_ENTRY_T current_entry
bool current_frame_cts_seq_valid
uint32_t current_frame_cts_seq_start
#define TX_FRAME_MAX_SIZE_BYTE
The maximum size of a hdlc frame in the queue Max UDP size we accept is 1472 byte,...
e2s_error_t poll_queue_stats(TX_QUEUE_T *queue)
Emit queue usage statistics when needed.
bool tx_queue_is_empty(TX_QUEUE_T *queue)
Check whether queue and active entry are fully drained.
size_t tx_queue_get_count(const TX_QUEUE_T *queue)
Get current number of queued entries.
e2s_error_t tx_queue_init(TX_QUEUE_T *queue, uint8_t *buffer_data)
Initialize TX queue and ring buffer storage.
e2s_error_t tx_queue_enqueue_udp_frame(TX_QUEUE_T *queue, const UDP_FRAME_T *frame)
Encode UDP frame to HDLC and append it to TX queue.
e2s_error_t tx_queue_drain(TX_QUEUE_T *queue, size_t bytes_to_drain, size_t *bytes_drained)
Drain up to bytes_to_drain bytes from queue into TX FIFO.