A set of data recording functions to locally store data in a circular buffer, with functions for offloading to an SD Card when convenient. dataRecorderr.h shows accessible functions to the main program - all direct SD operations are abstracted away by the library. When using this library, #include dataRecorder.h

Dependencies:   sd-driver_compatible_with_MAX32630FTHR

Fork of CircularBufferSDCardLib by Daniel Levine

Committer:
DVLevine
Date:
Wed Apr 04 16:17:34 2018 -0400
Revision:
2:c2cfb0ebc3bd
Parent:
1:45627bbdeb69
Child:
3:df8fb1b5d868
Completed first round. Now need to bug check

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DVLevine 0:ebe71c7e7854 1 #include "mbed.h"
DVLevine 0:ebe71c7e7854 2 #include "platform/CircularBuffer.h"
DVLevine 1:45627bbdeb69 3 #include "sdCardReader.h"
DVLevine 0:ebe71c7e7854 4
DVLevine 1:45627bbdeb69 5
DVLevine 1:45627bbdeb69 6 //converts number to string
DVLevine 0:ebe71c7e7854 7 #include <sstream>
DVLevine 0:ebe71c7e7854 8 #define SSTR( x ) static_cast< std::ostringstream & >(( std::ostringstream() << std::dec << x ) ).str()
DVLevine 0:ebe71c7e7854 9
DVLevine 1:45627bbdeb69 10 // Define circular buffer size
DVLevine 2:c2cfb0ebc3bd 11 #define BUF_SIZE 350
DVLevine 1:45627bbdeb69 12
DVLevine 1:45627bbdeb69 13
DVLevine 1:45627bbdeb69 14 /** Data Recorder is a class that stores data measurements in a ring buffer.
DVLevine 1:45627bbdeb69 15 It contains an SD Card Reader with a filesystem to store measurements when required **/
DVLevine 0:ebe71c7e7854 16
DVLevine 0:ebe71c7e7854 17 class DataRecorder{
DVLevine 0:ebe71c7e7854 18 public:
DVLevine 0:ebe71c7e7854 19 DataRecorder();
DVLevine 1:45627bbdeb69 20
DVLevine 1:45627bbdeb69 21 /** Get Information **/
DVLevine 1:45627bbdeb69 22 // gets the number of values stored in the circular buffer
DVLevine 1:45627bbdeb69 23 int getQuantityStored();
DVLevine 0:ebe71c7e7854 24
DVLevine 1:45627bbdeb69 25 // pops the last value off of the circular buffer
DVLevine 1:45627bbdeb69 26 uint16_t popLastDataPoint();
DVLevine 1:45627bbdeb69 27 uint32_t popLastTimeStamp();
DVLevine 1:45627bbdeb69 28
DVLevine 1:45627bbdeb69 29 /** Set Information **/
DVLevine 1:45627bbdeb69 30 void logDistancePoint(uint16_t value);
DVLevine 1:45627bbdeb69 31 void logTimeStamp(uint32_t value);
DVLevine 1:45627bbdeb69 32
DVLevine 1:45627bbdeb69 33 /** Save logged data to SD card **/
DVLevine 1:45627bbdeb69 34 void saveLoggedData(string filename);
DVLevine 0:ebe71c7e7854 35 //saves buffer to sd card and clears it
DVLevine 1:45627bbdeb69 36 void saveLoggedDataAndClearBuffer(string filename);
DVLevine 1:45627bbdeb69 37
DVLevine 0:ebe71c7e7854 38
DVLevine 0:ebe71c7e7854 39 private:
DVLevine 1:45627bbdeb69 40
DVLevine 1:45627bbdeb69 41 void savePoint(uint16_t value);
DVLevine 0:ebe71c7e7854 42 // input values are converted to char arrays
DVLevine 0:ebe71c7e7854 43 // iterate over char array to add values to buffer
DVLevine 0:ebe71c7e7854 44 // buffer contents it turned into a uint8_t array and written to
DVLevine 0:ebe71c7e7854 45 // sd card
DVLevine 1:45627bbdeb69 46
DVLevine 1:45627bbdeb69 47 /* Buffers for Data Storage */
DVLevine 1:45627bbdeb69 48 CircularBuffer<uint16_t, BUF_SIZE> buf_data;
DVLevine 1:45627bbdeb69 49 CircularBuffer<uint32_t, BUF_SIZE> buf_timestamp;
DVLevine 1:45627bbdeb69 50
DVLevine 1:45627bbdeb69 51 // Count for buffers
DVLevine 1:45627bbdeb69 52 int m_data_quantity;
DVLevine 2:c2cfb0ebc3bd 53 int m_time_quantity;
DVLevine 0:ebe71c7e7854 54
DVLevine 1:45627bbdeb69 55 /* SD Card Interface Object */
DVLevine 1:45627bbdeb69 56 SDCardReader* m_saveBuddy;
DVLevine 1:45627bbdeb69 57
DVLevine 1:45627bbdeb69 58
DVLevine 1:45627bbdeb69 59
DVLevine 0:ebe71c7e7854 60
DVLevine 0:ebe71c7e7854 61 //specialized buffers
DVLevine 1:45627bbdeb69 62 //CircularBuffer<uint16_t, BUF_SIZE> buf_distance;
DVLevine 1:45627bbdeb69 63 //CircularBuffer<uint16_t, BUF_SIZE> buf_kalmanAngle;
DVLevine 1:45627bbdeb69 64 //CircularBuffer<uint32_t, BUF_SIZE> buf_timestamp;
DVLevine 0:ebe71c7e7854 65
DVLevine 0:ebe71c7e7854 66 /*CircularBuffer<char, BUF_SIZE> buf_accX;
DVLevine 0:ebe71c7e7854 67 CircularBuffer<char, BUF_SIZE> buf_accY;
DVLevine 0:ebe71c7e7854 68 CircularBuffer<char, BUF_SIZE> buf_accZ;
DVLevine 0:ebe71c7e7854 69 CircularBuffer<char, BUF_SIZE> buf_gyroX;
DVLevine 0:ebe71c7e7854 70 CircularBuffer<char, BUF_SIZE> buf_gyroY;
DVLevine 0:ebe71c7e7854 71 CircularBuffer<char, BUF_SIZE> buf_gyroZ;*/
DVLevine 0:ebe71c7e7854 72
DVLevine 1:45627bbdeb69 73 //sdcard blocks
DVLevine 1:45627bbdeb69 74 //uint8_t blockDistance[4096];
DVLevine 1:45627bbdeb69 75 //int blockDistance_Index;
DVLevine 1:45627bbdeb69 76
DVLevine 1:45627bbdeb69 77 // clear pops all elements out of buffer.
DVLevine 1:45627bbdeb69 78 /*CircularBuffer<char, BUF_SIZE> buf;
DVLevine 1:45627bbdeb69 79 char data_stream[];// = "DataToBeAddedToBuffer";
DVLevine 1:45627bbdeb69 80 uint32_t bytes_written;// = 0;
DVLevine 1:45627bbdeb69 81 int m;
DVLevine 1:45627bbdeb69 82 const uint8_t separator = ' ';*/
DVLevine 0:ebe71c7e7854 83
DVLevine 0:ebe71c7e7854 84 };