MIP SDK  0.0.1
MicroStrain Communications Library for embedded systems
byte_ring.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdint.h>
4 #include <stddef.h>
5 
6 
7 typedef struct byte_ring_state
8 {
9  uint8_t* buffer;
10  size_t size;
11  size_t head;
12  size_t tail;
14 
15 void byte_ring_init(byte_ring_state* state, uint8_t* buffer, size_t size);
16 void byte_ring_clear(byte_ring_state* state);
17 
18 size_t byte_ring_capacity(const byte_ring_state* state);
19 size_t byte_ring_count(const byte_ring_state* state);
20 size_t byte_ring_free_space(const byte_ring_state* state);
21 
22 uint8_t byte_ring_at(const byte_ring_state* state, size_t index);
23 
24 size_t byte_ring_pop(byte_ring_state* state, size_t count);
25 
26 size_t byte_ring_copy_to(const byte_ring_state* state, uint8_t* buffer, size_t count);
27 size_t byte_ring_copy_from_and_update(byte_ring_state* state, const uint8_t** bytes, size_t* count);
28 
29 
30 size_t byte_ring_get_write_ptr(byte_ring_state* state, uint8_t** ptr_out);
31 void byte_ring_notify_written(byte_ring_state* state, size_t count);
size_t byte_ring_pop(byte_ring_state *state, size_t count)
Definition: byte_ring.c:53
size_t byte_ring_free_space(const byte_ring_state *state)
Definition: byte_ring.c:36
struct byte_ring_state byte_ring_state
size_t byte_ring_copy_to(const byte_ring_state *state, uint8_t *buffer, size_t count)
Definition: byte_ring.c:64
size_t byte_ring_get_write_ptr(byte_ring_state *state, uint8_t **ptr_out)
Definition: byte_ring.c:95
size_t byte_ring_count(const byte_ring_state *state)
Definition: byte_ring.c:29
void byte_ring_init(byte_ring_state *state, uint8_t *buffer, size_t size)
Definition: byte_ring.c:7
size_t byte_ring_capacity(const byte_ring_state *state)
Definition: byte_ring.c:24
size_t byte_ring_copy_from_and_update(byte_ring_state *state, const uint8_t **bytes, size_t *count)
Definition: byte_ring.c:77
uint8_t byte_ring_at(const byte_ring_state *state, size_t index)
Definition: byte_ring.c:46
void byte_ring_notify_written(byte_ring_state *state, size_t count)
Definition: byte_ring.c:111
void byte_ring_clear(byte_ring_state *state)
Definition: byte_ring.c:18
Definition: byte_ring.h:8
size_t head
Definition: byte_ring.h:11
uint8_t * buffer
Definition: byte_ring.h:9
size_t tail
Definition: byte_ring.h:12
size_t size
Definition: byte_ring.h:10