diff --git a/bacnet-stack/include/ringbuf.h b/bacnet-stack/include/ringbuf.h index 4e09abdb..a977e92d 100644 --- a/bacnet-stack/include/ringbuf.h +++ b/bacnet-stack/include/ringbuf.h @@ -46,8 +46,8 @@ struct ring_buffer_t { volatile uint8_t * buffer; /* block of memory or array of data */ unsigned element_size; /* how many bytes for each chunk */ unsigned element_count; /* number of chunks of data */ - volatile unsigned head; /* where the writes go */ - volatile unsigned tail; /* where the reads come from */ + volatile unsigned head; /* where the writes go */ + volatile unsigned tail; /* where the reads come from */ }; typedef struct ring_buffer_t RING_BUFFER; @@ -55,21 +55,21 @@ typedef struct ring_buffer_t RING_BUFFER; extern "C" { #endif /* __cplusplus */ - unsigned Ringbuf_Count( + unsigned Ringbuf_Count ( RING_BUFFER const *b); - bool Ringbuf_Full( + bool Ringbuf_Full ( RING_BUFFER const *b); bool Ringbuf_Empty( RING_BUFFER const *b); - uint8_t *Ringbuf_Get_Front( + volatile uint8_t *Ringbuf_Get_Front( RING_BUFFER const *b); - uint8_t *Ringbuf_Pop_Front( + volatile uint8_t *Ringbuf_Pop_Front( RING_BUFFER * b); bool Ringbuf_Put( RING_BUFFER * b, /* ring buffer structure */ - uint8_t * data_element); /* one element to add to the ring */ - uint8_t *Ringbuf_Alloc( - RING_BUFFER * b); + volatile uint8_t *data_element); /* one element to add to the ring */ + volatile uint8_t *Ringbuf_Alloc( + RING_BUFFER *b); /* Note: element_count must be a power of two */ void Ringbuf_Init( RING_BUFFER * b, /* ring buffer structure */ diff --git a/bacnet-stack/src/ringbuf.c b/bacnet-stack/src/ringbuf.c index d7ddcc53..a9732414 100644 --- a/bacnet-stack/src/ringbuf.c +++ b/bacnet-stack/src/ringbuf.c @@ -47,7 +47,7 @@ * ALGORITHM: none * NOTES: none *****************************************************************************/ -unsigned Ringbuf_Count( +unsigned Ringbuf_Count ( RING_BUFFER const *b) { unsigned head, tail; /* used to avoid volatile decision */ @@ -67,7 +67,7 @@ unsigned Ringbuf_Count( * ALGORITHM: none * NOTES: none *****************************************************************************/ -bool Ringbuf_Full( +bool Ringbuf_Full ( RING_BUFFER const *b) { return (b ? (Ringbuf_Count(b) == b->element_count) : true); @@ -91,10 +91,10 @@ bool Ringbuf_Empty( * ALGORITHM: none * NOTES: none *****************************************************************************/ -uint8_t *Ringbuf_Get_Front( +volatile uint8_t *Ringbuf_Get_Front( RING_BUFFER const *b) { - uint8_t *data_element = NULL; /* return value */ + volatile uint8_t *data_element = NULL; /* return value */ if (!Ringbuf_Empty(b)) { data_element = b->buffer; @@ -110,10 +110,10 @@ uint8_t *Ringbuf_Get_Front( * ALGORITHM: none * NOTES: none *****************************************************************************/ -uint8_t *Ringbuf_Pop_Front( +volatile uint8_t *Ringbuf_Pop_Front( RING_BUFFER * b) { - uint8_t *data_element = NULL; + volatile uint8_t *data_element = NULL; if (!Ringbuf_Empty(b)) { data_element = b->buffer; @@ -132,10 +132,10 @@ uint8_t *Ringbuf_Pop_Front( *****************************************************************************/ bool Ringbuf_Put( RING_BUFFER * b, /* ring buffer structure */ - uint8_t *data_element) + volatile uint8_t *data_element) { /* one element to add to the ring */ bool status = false; /* return value */ - uint8_t *ring_data = NULL; /* used to help point ring data */ + volatile uint8_t *ring_data = NULL; /* used to help point ring data */ unsigned i; /* loop counter */ if (b && data_element) { @@ -160,10 +160,10 @@ bool Ringbuf_Put( * ALGORITHM: none * NOTES: none *****************************************************************************/ -uint8_t *Ringbuf_Alloc( - RING_BUFFER * b) +volatile uint8_t *Ringbuf_Alloc( + RING_BUFFER *b) { - uint8_t *ring_data = NULL; /* used to help point ring data */ + volatile uint8_t *ring_data = NULL; /* used to help point ring data */ if (b) { /* limit the amount of elements that we accept */