Хочу сделать что то вроде
check_sendToqueue = FRTOS1_xQueueSendToBack(Global_Queue_Handle, &lf_rec_buff , 0);
check_queue = FRTOS1_xQueueReceive(Global_Queue_Handle, <_rec_buff, 0);
и что то я запутался
#define QUEU_ELEMENT_COUNT 4
#define QUEU_ELEMENT_SIZE 64
typedef struct
{
uint8_t idx;
uint8_t capacity;
uint8_t new_element;
uint8_t size;
uint8_t queue_array[QUEU_ELEMENT_COUNT][QUEU_ELEMENT_SIZE];
}S_QUEUE;
int QUEUE_Push(S_QUEUE* queue, uint8_t *item)
{
if ((queue->size) >= queue->capacity)
{
queue->new_element = 0;
return QUEUE_FULL;
}
memcpy(&queue->queue_array[queue->idx][0], item, sizeof(item));
queue->new_element = 1;
queue->size++;
queue->idx++;
return QUEUE_OK;
}
int QUEUE_Pop(S_QUEUE* queue, uint8_t *item)
{
if (queue->size > 0)
{
memcpy(item, &queue->queue_array[queue->idx][0], sizeof(item));
queue->size--;
queue->idx--;
return QUEUE_NEW;
}
else
return QUEUE_OK;
}
но так не соблюдается принцип FIFO. или я не прав?