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

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


 Для обработки нового кадра используется функция lip_mac_rx_queue_proc_frame(),
 в результате чего кадр копируются в одну из очередей.

 Далее в основном цикле выполнения работ логика стека получает принятые пакеты
 из очередей с помощью lip_mac_rx_queue_get_frame(), которая возвращает принятый пакет из наиболее
 приоритетной очереди, обрабатывает его, после чего вызывает lip_mac_rx_queue_get_frame_finish()
 для указания, что данные кадра больше не нужны и место в очереди снова свободно.


 @author Borisov Alexey <borisov@lcard.ru>
******************************************************************************/
#include "lip_mac_rx_cfg_defs.h"
#if LIP_MAC_RX_QUEUE_ENABLE
    #include "lip/lip_defs.h"
    #include "lip/ll/lip_ll.h"


    /** @brief Сброс в начальное состояние всех очередей передачи данных */
    void lip_max_rx_queue_reset(void);
    void lip_mac_rx_queue_proc_frame(t_lip_rx_ll_frame *ll_frame);
    t_lip_rx_frame *lip_mac_rx_queue_get_frame(void);
    void lip_mac_rx_queue_get_frame_finish(t_lip_rx_frame *frame);
    uint32_t lip_max_rx_queue_get_drop_frames_cnt(uint8_t q_idx);
#endif
#endif // LIP_MAC_RX_QUEUE_H
