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@13:91350588d530, 2018-07-11 (annotated)
- Committer:
- DVLevine
- Date:
- Wed Jul 11 07:06:04 2018 -0400
- Revision:
- 13:91350588d530
- Parent:
- 12:c09a50d9469a
added /fs/ to be able to actually read and write to text file denoting log number
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DVLevine |
3:df8fb1b5d868 | 1 | #ifndef _DATARECORDER_H_ |
DVLevine |
3:df8fb1b5d868 | 2 | #define _DATARECORDER_H_ |
DVLevine |
3:df8fb1b5d868 | 3 | |
DVLevine | 0:ebe71c7e7854 | 4 | #include "mbed.h" |
DVLevine | 0:ebe71c7e7854 | 5 | #include "platform/CircularBuffer.h" |
DVLevine |
1:45627bbdeb69 | 6 | #include "sdCardReader.h" |
DVLevine | 0:ebe71c7e7854 | 7 | |
DVLevine |
1:45627bbdeb69 | 8 | |
DVLevine |
1:45627bbdeb69 | 9 | //converts number to string |
DVLevine | 0:ebe71c7e7854 | 10 | #include <sstream> |
DVLevine | 0:ebe71c7e7854 | 11 | #define SSTR( x ) static_cast< std::ostringstream & >(( std::ostringstream() << std::dec << x ) ).str() |
DVLevine | 0:ebe71c7e7854 | 12 | |
DVLevine |
1:45627bbdeb69 | 13 | // Define circular buffer size |
DVLevine | 12:c09a50d9469a | 14 | #define BUF_SIZE 10000 |
DVLevine |
1:45627bbdeb69 | 15 | |
DVLevine |
1:45627bbdeb69 | 16 | |
DVLevine |
1:45627bbdeb69 | 17 | /** Data Recorder is a class that stores data measurements in a ring buffer. |
DVLevine |
1:45627bbdeb69 | 18 | It contains an SD Card Reader with a filesystem to store measurements when required **/ |
DVLevine | 0:ebe71c7e7854 | 19 | |
DVLevine | 0:ebe71c7e7854 | 20 | class DataRecorder{ |
DVLevine | 0:ebe71c7e7854 | 21 | public: |
DVLevine | 10:f5fdba83488a | 22 | DataRecorder(int numDataFields); |
DVLevine |
1:45627bbdeb69 | 23 | /** Get Information **/ |
DVLevine |
1:45627bbdeb69 | 24 | // gets the number of values stored in the circular buffer |
DVLevine |
3:df8fb1b5d868 | 25 | int getDataQuantity(); |
DVLevine |
3:df8fb1b5d868 | 26 | int getTimeStampQuantity(); |
DVLevine | 0:ebe71c7e7854 | 27 | |
DVLevine |
1:45627bbdeb69 | 28 | // pops the last value off of the circular buffer |
DVLevine |
1:45627bbdeb69 | 29 | uint16_t popLastDataPoint(); |
DVLevine |
1:45627bbdeb69 | 30 | uint32_t popLastTimeStamp(); |
DVLevine |
1:45627bbdeb69 | 31 | |
DVLevine |
1:45627bbdeb69 | 32 | /** Set Information **/ |
DVLevine |
1:45627bbdeb69 | 33 | void logDistancePoint(uint16_t value); |
DVLevine |
1:45627bbdeb69 | 34 | void logTimeStamp(uint32_t value); |
DVLevine |
1:45627bbdeb69 | 35 | |
DVLevine |
1:45627bbdeb69 | 36 | /** Save logged data to SD card **/ |
DVLevine |
1:45627bbdeb69 | 37 | void saveLoggedData(string filename); |
DVLevine | 0:ebe71c7e7854 | 38 | //saves buffer to sd card and clears it |
DVLevine |
1:45627bbdeb69 | 39 | void saveLoggedDataAndClearBuffer(string filename); |
DVLevine |
1:45627bbdeb69 | 40 | |
DVLevine | 12:c09a50d9469a | 41 | int getTrialNumAndIncrement(); |
DVLevine | 12:c09a50d9469a | 42 | |
DVLevine | 0:ebe71c7e7854 | 43 | |
DVLevine | 0:ebe71c7e7854 | 44 | private: |
DVLevine |
1:45627bbdeb69 | 45 | |
DVLevine |
1:45627bbdeb69 | 46 | void savePoint(uint16_t value); |
DVLevine | 0:ebe71c7e7854 | 47 | // input values are converted to char arrays |
DVLevine | 0:ebe71c7e7854 | 48 | // iterate over char array to add values to buffer |
DVLevine | 0:ebe71c7e7854 | 49 | // buffer contents it turned into a uint8_t array and written to |
DVLevine | 0:ebe71c7e7854 | 50 | // sd card |
DVLevine |
1:45627bbdeb69 | 51 | |
DVLevine |
1:45627bbdeb69 | 52 | /* Buffers for Data Storage */ |
DVLevine |
3:df8fb1b5d868 | 53 | CircularBuffer<uint16_t, BUF_SIZE> m_buf_data; |
DVLevine |
3:df8fb1b5d868 | 54 | CircularBuffer<uint32_t, BUF_SIZE> m_buf_timestamp; |
DVLevine |
1:45627bbdeb69 | 55 | |
DVLevine |
1:45627bbdeb69 | 56 | // Count for buffers |
DVLevine |
1:45627bbdeb69 | 57 | int m_data_quantity; |
DVLevine |
2:c2cfb0ebc3bd | 58 | int m_time_quantity; |
DVLevine | 0:ebe71c7e7854 | 59 | |
DVLevine |
1:45627bbdeb69 | 60 | /* SD Card Interface Object */ |
DVLevine |
1:45627bbdeb69 | 61 | SDCardReader* m_saveBuddy; |
DVLevine | 10:f5fdba83488a | 62 | |
DVLevine | 10:f5fdba83488a | 63 | int m_numDataFields; |
DVLevine |
1:45627bbdeb69 | 64 | |
DVLevine |
1:45627bbdeb69 | 65 | |
DVLevine |
1:45627bbdeb69 | 66 | |
DVLevine | 0:ebe71c7e7854 | 67 | |
DVLevine | 0:ebe71c7e7854 | 68 | //specialized buffers |
DVLevine |
1:45627bbdeb69 | 69 | //CircularBuffer<uint16_t, BUF_SIZE> buf_distance; |
DVLevine |
1:45627bbdeb69 | 70 | //CircularBuffer<uint16_t, BUF_SIZE> buf_kalmanAngle; |
DVLevine |
1:45627bbdeb69 | 71 | //CircularBuffer<uint32_t, BUF_SIZE> buf_timestamp; |
DVLevine | 0:ebe71c7e7854 | 72 | |
DVLevine | 0:ebe71c7e7854 | 73 | /*CircularBuffer<char, BUF_SIZE> buf_accX; |
DVLevine | 0:ebe71c7e7854 | 74 | CircularBuffer<char, BUF_SIZE> buf_accY; |
DVLevine | 0:ebe71c7e7854 | 75 | CircularBuffer<char, BUF_SIZE> buf_accZ; |
DVLevine | 0:ebe71c7e7854 | 76 | CircularBuffer<char, BUF_SIZE> buf_gyroX; |
DVLevine | 0:ebe71c7e7854 | 77 | CircularBuffer<char, BUF_SIZE> buf_gyroY; |
DVLevine | 0:ebe71c7e7854 | 78 | CircularBuffer<char, BUF_SIZE> buf_gyroZ;*/ |
DVLevine | 0:ebe71c7e7854 | 79 | |
DVLevine |
1:45627bbdeb69 | 80 | //sdcard blocks |
DVLevine |
1:45627bbdeb69 | 81 | //uint8_t blockDistance[4096]; |
DVLevine |
1:45627bbdeb69 | 82 | //int blockDistance_Index; |
DVLevine |
1:45627bbdeb69 | 83 | |
DVLevine |
1:45627bbdeb69 | 84 | // clear pops all elements out of buffer. |
DVLevine |
1:45627bbdeb69 | 85 | /*CircularBuffer<char, BUF_SIZE> buf; |
DVLevine |
1:45627bbdeb69 | 86 | char data_stream[];// = "DataToBeAddedToBuffer"; |
DVLevine |
1:45627bbdeb69 | 87 | uint32_t bytes_written;// = 0; |
DVLevine |
1:45627bbdeb69 | 88 | int m; |
DVLevine |
1:45627bbdeb69 | 89 | const uint8_t separator = ' ';*/ |
DVLevine | 0:ebe71c7e7854 | 90 | |
DVLevine | 0:ebe71c7e7854 | 91 | }; |
DVLevine |
3:df8fb1b5d868 | 92 | |
DVLevine |
3:df8fb1b5d868 | 93 | |
DVLevine |
3:df8fb1b5d868 | 94 | #endif |