#ifndef LIP_MAC_TX_QUEUE_H
#define LIP_MAC_TX_QUEUE_H

/***************************************************************************//**
 @addtogroup lip_mac
 @{
 @file lip_mac_tx_queue.h
 @brief Файл содержит определения функций для работы с очерядями передачи пакетов

 В данном файле реализована передача пакетов с использованием очередей пакетов
 на передачу. Используется только при разрешении реализации использования
 очередей в конфигураии через параметр #LIP_MAC_TX_QUEUE_ENABLE.
 Использование очередей на передачу позволяет учитывать приоритет пакетов при
 передаче.

 Всего может быть до 4-х очередей с разным приоритетом (очередь с номером 0 -
 наиболее приоритетная). Размеры очередей и их количество определяются параметрами
 конфигурации.

 @author Borisov Alexey <borisov@lcard.ru>
******************************************************************************/

#include "lip_mac_tx_cfg_defs.h"

#if LIP_MAC_TX_QUEUE_ENABLE
    #include "lip/lip_defs.h"
    #include "lip/ll/lip_ll.h"

    /** @brief Сброс в начальное состояние всех очередей передачи данных */
    void lip_max_tx_queue_reset(void);
    /** @brief Выделение буфера для формирования пакета на передачу в одной из очередей по приоритету */
    t_lip_tx_frame *lip_mac_tx_queue_frame_prepare(const t_lip_tx_frame_info *info);
    t_lip_errs lip_mac_tx_queue_frame_flush(t_lip_tx_frame *frame);
    void lip_mac_tx_queue_frame_done(t_lip_tx_frame *frame);
    void lip_mac_tx_queue_pull(void);
    bool lip_mac_tx_queue_rdy(void);
#endif

#endif // LIP_MAC_TX_QUEUE_H
