Midnight Sun Firmware
Loading...
Searching...
No Matches
queues.h
1#pragma once
2
3/************************************************************************************************
4 * @file queues.h
5 *
6 * @brief Header file for the queue library
7 *
8 * @date 2024-11-02
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13
14/* Inter-component Headers */
15#include "FreeRTOS.h"
16#include "queue.h"
17
18/* Intra-component Headers */
19#include "status.h"
20
28#define QUEUE_DELAY_BLOCKING 0xFFFFFFFFU
29
33typedef struct {
34 uint32_t num_items;
35 uint32_t item_size;
36 uint8_t *storage_buf;
37 StaticQueue_t queue;
38 QueueHandle_t handle;
39} Queue;
40
48
58StatusCode queue_send(Queue *queue, const void *item, uint32_t delay_ms);
59
69StatusCode queue_send_from_isr(Queue *queue, const void *item, BaseType_t *higher_prio_woken);
70
80StatusCode queue_receive(Queue *queue, void *buf, uint32_t delay_ms);
81
91StatusCode queue_receive_from_isr(Queue *queue, void *buf, BaseType_t *higher_prio_woken);
92
93// Attempt to receive an item from the queue without removing it from the queue, delaying for
94// delay_ms in ms before timing out.
95
105StatusCode queue_peek(Queue *queue, void *buf, uint32_t delay_ms);
106
111void queue_reset(Queue *queue);
112
118uint32_t queue_get_num_items(Queue *queue);
119
125uint32_t queue_get_spaces_available(Queue *queue);
126
StatusCode queue_init(Queue *queue)
Create a queue with the parameters specified in settings.
Definition: queues.c:18
StatusCode queue_send_from_isr(Queue *queue, const void *item, BaseType_t *higher_prio_woken)
Place an item into the queue from an ISR.
Definition: queues.c:41
uint32_t queue_get_num_items(Queue *queue)
Retrieve the total number of spaces in the queue.
Definition: queues.c:107
void delay_ms(uint32_t time_ms)
Blocking delay for some amount of time in milliseconds.
Definition: delay.c:20
StatusCode queue_peek(Queue *queue, void *buf, uint32_t delay_ms)
Receive an item from the queue without removing it.
Definition: queues.c:80
uint32_t queue_get_spaces_available(Queue *queue)
Retrieve the space left in the queue.
Definition: queues.c:100
void queue_reset(Queue *queue)
Reset all data in the queue.
Definition: queues.c:93
StatusCode queue_receive(Queue *queue, void *buf, uint32_t delay_ms)
Retrieve an item from the queue, delaying for delay_ms before timing out.
Definition: queues.c:54
StatusCode queue_send(Queue *queue, const void *item, uint32_t delay_ms)
Place an item into the queue, delaying for delay_ms before timing out.
Definition: queues.c:28
StatusCode queue_receive_from_isr(Queue *queue, void *buf, BaseType_t *higher_prio_woken)
Retrieve an item from the queue, delaying for delay_ms before timing out.
Definition: queues.c:67
StatusCode
StatusCodes for various errors.
Definition: status.h:27
Queue storage and access struct.
Definition: queues.h:33
QueueHandle_t handle
Definition: queues.h:38
uint32_t num_items
Definition: queues.h:34
StaticQueue_t queue
Definition: queues.h:37
uint32_t item_size
Definition: queues.h:35
uint8_t * storage_buf
Definition: queues.h:36