Log data to a micro SD card.

Dependencies:   SDFileSystem mbed

Revision:
1:c5e56e2580bf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RingBuffer.cpp	Mon May 04 07:10:55 2015 +0000
@@ -0,0 +1,63 @@
+#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);
+}
\ No newline at end of file