Log data to a micro SD card.
Dependencies: SDFileSystem mbed
RingBuffer.cpp
- Committer:
- onaka
- Date:
- 2015-05-04
- Revision:
- 1:c5e56e2580bf
File content as of revision 1:c5e56e2580bf:
#include "RingBuffer.h" void RingBuffer::initialize_buffer(){ start=0; end=0; } int16_t RingBuffer::buffer_size(){ if(end >= start){ return end - start; } return RING_BUFFER_SIZE - (start - end); } uint8_t RingBuffer::read_buffer_byte(){ uint8_t a; a=buffer[start]; start=(start+1)%RING_BUFFER_SIZE; return a; } int16_t RingBuffer::read_buffer_short(){ int16_t a, b; a=buffer[start]; b=buffer[(start+1)%RING_BUFFER_SIZE]; start=(start+2)%RING_BUFFER_SIZE; return (a&0xff)|(b<<8); } void RingBuffer::read_buffer(uint8_t buf[], int16_t offset, int16_t size){ int16_t i; uint8_t* p=buf+offset; for(i=0; i<size; i++){ *(p++)=buffer[start]; start=(start+1)%RING_BUFFER_SIZE; } } int16_t RingBuffer::buffer_capacity(){ if(end >= start){ return RING_BUFFER_SIZE-(end-start)-1; } return (start-end)-1; } void RingBuffer::write_buffer_byte(uint8_t ch){ buffer[end]=ch; end=(end+1)%RING_BUFFER_SIZE; } void RingBuffer::write_buffer(const uint8_t buf[], int16_t offset, int16_t size){ int16_t i; const uint8_t* p=buf+offset; for(i=0; i<size; i++){ buffer[end]=*(p++); end=(end+1)%RING_BUFFER_SIZE; } } bool RingBuffer::is_buffer_empty(){ return (start==end); }