Queue
Queue implementation in C
Queue.h
Go to the documentation of this file.
1 /******************************************************************************
2 * Title : Queue header file
3 * Filename : Queue.h
4 * Author : Maximiliano Valencia
5 * Origin Date : 13/02/2019
6 * Version : 1.0.0
7 * Compiler : gcc
8 * Target : STM32
9 * Notes : None
10 ******************************************************************************/
17 #ifndef QUEUE_H
18 #define QUEUE_H
19 
20 /******************************************************************************
21 * Includes
22 ******************************************************************************/
23 #include <stdio.h>
24 #include <stdint.h>
25 #include <pthread.h>
26 
27 /******************************************************************************
28 * Preprocessor Constants
29 ******************************************************************************/
30 
31 
32 /******************************************************************************
33 * Configuration Constants
34 ******************************************************************************/
35 
36 
37 /******************************************************************************
38 * Macros
39 ******************************************************************************/
40 
41 
42 /******************************************************************************
43 * Typedefs
44 ******************************************************************************/
46 typedef uint8_t queue_array_t;
47 
49 typedef struct queue_t queue_t;
50 
52 struct queue_t
53 {
54  uint16_t index;
55  uint16_t outdex;
56  uint16_t numElements;
58  uint16_t queueSize;
59  uint8_t dataSize;
60  pthread_mutex_t lock;
61 };
62 
63 /******************************************************************************
64 * Variables
65 ******************************************************************************/
66 
67 
68 /******************************************************************************
69 * Function Prototypes
70 ******************************************************************************/
71 void queue_init(queue_t* queue,
72  queue_array_t* queueArray,
73  uint16_t queueSize,
74  uint8_t dataSize);
75 uint8_t queue_enqueue(queue_t* queue, const void* value);
76 uint8_t queue_dequeue(queue_t* queue, void* value);
77 void queue_print(queue_t* queue, void (*printFn)(const void* data), void* data);
78 uint16_t queue_count(queue_t* queue);
79 
80 #endif /* QUEUE_H */
uint16_t queue_count(queue_t *queue)
Definition: Queue.c:383
void queue_init(queue_t *queue, queue_array_t *queueArray, uint16_t queueSize, uint8_t dataSize)
Definition: Queue.c:174
uint16_t numElements
Definition: Queue.h:56
uint8_t queue_dequeue(queue_t *queue, void *value)
Definition: Queue.c:276
void queue_print(queue_t *queue, void(*printFn)(const void *data), void *data)
Definition: Queue.c:346
uint8_t dataSize
Definition: Queue.h:59
Queue structure.
Definition: Queue.h:52
uint8_t queue_array_t
Queue array typedef.
Definition: Queue.h:46
uint16_t queueSize
Definition: Queue.h:58
uint8_t queue_enqueue(queue_t *queue, const void *value)
Definition: Queue.c:222
pthread_mutex_t lock
Definition: Queue.h:60
uint16_t index
Definition: Queue.h:54
queue_array_t * queueArray
Definition: Queue.h:57
uint16_t outdex
Definition: Queue.h:55