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
dataRecorder.h@2:c2cfb0ebc3bd, 2018-04-04 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |