ESP8266 ILI9341 display support code with printf sources, wire-frame viewer and custom fonts  1.0
ESP8266ILI9341DisplayProject
queue.h
Go to the documentation of this file.
1 
24 #ifndef _QUEUE_H_
25 #define _QUEUE_H_
26 
27 // Named address space
28 #ifndef MEMSPACE
29 #define MEMSPACE
30 #endif
31 
32 #define QUEUE_OVERRUN 1
33 #define QUEUE_EOL 2
34 
36 typedef struct {
37  char *buf; /* Ring buffer */
38  uint8_t flags; /* flags */
39  size_t in; /* input offset */
40  size_t out; /* output offset */
41  size_t bytes; /* bytes used */
42  size_t size; /* Ring buffer size */
43 } queue_t;
44 
45 /* queue.c */
46 queue_t *queue_new ( size_t size );
47 void queue_del ( queue_t *q );
48 void queue_flush ( queue_t *q );
49 size_t queue_used ( queue_t *q );
50 size_t queue_empty ( queue_t *q );
51 size_t queue_space ( queue_t *q );
52 size_t queue_full ( queue_t *q );
53 size_t queue_push_buffer ( queue_t *q , uint8_t *src , size_t size );
54 size_t queue_pop_buffer ( queue_t *q , uint8_t *dst , size_t size );
55 int queue_pushc ( queue_t *q , uint8_t c );
56 int queue_popc ( queue_t *q );
57 
58 #endif
59 
char * buf
Definition: queue.h:37
dst_t dst
DST start and stop in GMT epoch.
Definition: time.c:52
size_t out
Definition: queue.h:40
size_t queue_empty(queue_t *q)
Is the ring buffer empty ?
Definition: queue.c:114
size_t queue_pop_buffer(queue_t *q, uint8_t *dst, size_t size)
Get a data buffer from the ring buffer. Note: This function does not wait/block until there is enough...
Definition: queue.c:186
size_t in
Definition: queue.h:39
size_t queue_space(queue_t *q)
Find the amount of free space remaining in the ring buffer.
Definition: queue.c:128
size_t queue_push_buffer(queue_t *q, uint8_t *src, size_t size)
Add a data buffer to the ring buffer Note: This function does not wait/block util there is enough fre...
Definition: queue.c:157
void queue_flush(queue_t *q)
Flush ring buffer.
Definition: queue.c:87
size_t queue_full(queue_t *q)
Is the ring buffer full ?
Definition: queue.c:140
size_t bytes
Definition: queue.h:41
queue structure
Definition: queue.h:36
uint8_t flags
Definition: queue.h:38
int queue_popc(queue_t *q)
Remove a byte from the ring buffer Note: This function does not wait/block util there is data to meet...
Definition: queue.c:244
queue_t * queue_new(size_t size)
Create a ring buffer of a given size.
Definition: queue.c:38
int queue_pushc(queue_t *q, uint8_t c)
Add a byte to the ring buffer Note: This function does not wait/block util there is enough free space...
Definition: queue.c:216
void queue_del(queue_t *q)
Delete a ring buffer and free memory.
Definition: queue.c:62
unsigned char uint8_t
Definition: send.c:17
size_t size
Definition: queue.h:42
size_t queue_used(queue_t *q)
Find the number of bytes used by the ring buffer.
Definition: queue.c:102