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.cpp@0:ebe71c7e7854, 2018-04-03 (annotated)
- Committer:
- DVLevine
- Date:
- Tue Apr 03 21:50:25 2018 +0000
- Revision:
- 0:ebe71c7e7854
- Child:
- 1:45627bbdeb69
SD Card Reading library testbed;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DVLevine | 0:ebe71c7e7854 | 1 | |
DVLevine | 0:ebe71c7e7854 | 2 | #include "dataRecorder.h" |
DVLevine | 0:ebe71c7e7854 | 3 | |
DVLevine | 0:ebe71c7e7854 | 4 | DataRecorder::DataRecorder(){ |
DVLevine | 0:ebe71c7e7854 | 5 | uint32_t bytes_written = 0; |
DVLevine | 0:ebe71c7e7854 | 6 | blockDistance_Index = 0; |
DVLevine | 0:ebe71c7e7854 | 7 | //uint8_t separator = ' '; |
DVLevine | 0:ebe71c7e7854 | 8 | }; |
DVLevine | 0:ebe71c7e7854 | 9 | |
DVLevine | 0:ebe71c7e7854 | 10 | |
DVLevine | 0:ebe71c7e7854 | 11 | //private buffer load in method |
DVLevine | 0:ebe71c7e7854 | 12 | void DataRecorder::pushEleToBuffer(uint16_t inputVal){ |
DVLevine | 0:ebe71c7e7854 | 13 | buf_distance.push(inputVal); |
DVLevine | 0:ebe71c7e7854 | 14 | // while (!buf.full()) { |
DVLevine | 0:ebe71c7e7854 | 15 | // buf.push(inputVal); |
DVLevine | 0:ebe71c7e7854 | 16 | // } |
DVLevine | 0:ebe71c7e7854 | 17 | |
DVLevine | 0:ebe71c7e7854 | 18 | } |
DVLevine | 0:ebe71c7e7854 | 19 | |
DVLevine | 0:ebe71c7e7854 | 20 | uint8_t* DataRecorder::getDistanceBlock(){ |
DVLevine | 0:ebe71c7e7854 | 21 | return blockDistance; |
DVLevine | 0:ebe71c7e7854 | 22 | } |
DVLevine | 0:ebe71c7e7854 | 23 | |
DVLevine | 0:ebe71c7e7854 | 24 | int DataRecorder::getDistanceDataLength(){ |
DVLevine | 0:ebe71c7e7854 | 25 | return blockDistance_Index; |
DVLevine | 0:ebe71c7e7854 | 26 | }; |
DVLevine | 0:ebe71c7e7854 | 27 | |
DVLevine | 0:ebe71c7e7854 | 28 | |
DVLevine | 0:ebe71c7e7854 | 29 | //writes input value to buffer |
DVLevine | 0:ebe71c7e7854 | 30 | void DataRecorder::LogDistancePoint(uint16_t value){ |
DVLevine | 0:ebe71c7e7854 | 31 | buf_distance.push(value); |
DVLevine | 0:ebe71c7e7854 | 32 | savePoint(value); |
DVLevine | 0:ebe71c7e7854 | 33 | } |
DVLevine | 0:ebe71c7e7854 | 34 | |
DVLevine | 0:ebe71c7e7854 | 35 | void DataRecorder::savePoint(uint16_t value){ |
DVLevine | 0:ebe71c7e7854 | 36 | string yo = SSTR(value); |
DVLevine | 0:ebe71c7e7854 | 37 | int n = yo.length(); |
DVLevine | 0:ebe71c7e7854 | 38 | // declaring character array |
DVLevine | 0:ebe71c7e7854 | 39 | char char_array[n+1]; |
DVLevine | 0:ebe71c7e7854 | 40 | |
DVLevine | 0:ebe71c7e7854 | 41 | // copying the contents of the |
DVLevine | 0:ebe71c7e7854 | 42 | // string to char array |
DVLevine | 0:ebe71c7e7854 | 43 | strcpy(char_array, yo.c_str()); |
DVLevine | 0:ebe71c7e7854 | 44 | |
DVLevine | 0:ebe71c7e7854 | 45 | |
DVLevine | 0:ebe71c7e7854 | 46 | int counter = 0; |
DVLevine | 0:ebe71c7e7854 | 47 | |
DVLevine | 0:ebe71c7e7854 | 48 | for (int i=blockDistance_Index; i<blockDistance_Index+n; i++){ |
DVLevine | 0:ebe71c7e7854 | 49 | blockDistance[i] = char_array[counter]; |
DVLevine | 0:ebe71c7e7854 | 50 | //printf("%i\n",i); |
DVLevine | 0:ebe71c7e7854 | 51 | //printf("%c\n",blockDistance[i]); |
DVLevine | 0:ebe71c7e7854 | 52 | counter++; |
DVLevine | 0:ebe71c7e7854 | 53 | } |
DVLevine | 0:ebe71c7e7854 | 54 | |
DVLevine | 0:ebe71c7e7854 | 55 | blockDistance_Index = blockDistance_Index+n; |
DVLevine | 0:ebe71c7e7854 | 56 | |
DVLevine | 0:ebe71c7e7854 | 57 | //add separator |
DVLevine | 0:ebe71c7e7854 | 58 | blockDistance[blockDistance_Index] = ' '; |
DVLevine | 0:ebe71c7e7854 | 59 | blockDistance_Index++; |
DVLevine | 0:ebe71c7e7854 | 60 | |
DVLevine | 0:ebe71c7e7854 | 61 | //buf.push(char_array[i]); |
DVLevine | 0:ebe71c7e7854 | 62 | //buf_distance |
DVLevine | 0:ebe71c7e7854 | 63 | } |
DVLevine | 0:ebe71c7e7854 | 64 | |
DVLevine | 0:ebe71c7e7854 | 65 | |
DVLevine | 0:ebe71c7e7854 | 66 | //saves buffer to sd card and clears it |
DVLevine | 0:ebe71c7e7854 | 67 | int WriteDataAndClearBuffer(); |
DVLevine | 0:ebe71c7e7854 | 68 | |
DVLevine | 0:ebe71c7e7854 | 69 | |
DVLevine | 0:ebe71c7e7854 | 70 | |
DVLevine | 0:ebe71c7e7854 | 71 | |
DVLevine | 0:ebe71c7e7854 | 72 | |
DVLevine | 0:ebe71c7e7854 | 73 | /* |
DVLevine | 0:ebe71c7e7854 | 74 | |
DVLevine | 0:ebe71c7e7854 | 75 | uint32_t bytes_written = 0; |
DVLevine | 0:ebe71c7e7854 | 76 | |
DVLevine | 0:ebe71c7e7854 | 77 | while (!buf.full()) { |
DVLevine | 0:ebe71c7e7854 | 78 | buf.push(data_stream[bytes_written++]); |
DVLevine | 0:ebe71c7e7854 | 79 | } |
DVLevine | 0:ebe71c7e7854 | 80 | |
DVLevine | 0:ebe71c7e7854 | 81 | printf("Circular buffer is full: \"%s\" or empty: \"%s\" \n", |
DVLevine | 0:ebe71c7e7854 | 82 | (buf.full()? "true":"false"), |
DVLevine | 0:ebe71c7e7854 | 83 | (buf.empty()? "true":"false") ); |
DVLevine | 0:ebe71c7e7854 | 84 | printf ("Bytes written %d \n", bytes_written); |
DVLevine | 0:ebe71c7e7854 | 85 | |
DVLevine | 0:ebe71c7e7854 | 86 | // If buffer is full, contents will be over-written |
DVLevine | 0:ebe71c7e7854 | 87 | buf.push(data_stream[bytes_written++]); |
DVLevine | 0:ebe71c7e7854 | 88 | |
DVLevine | 0:ebe71c7e7854 | 89 | char data; |
DVLevine | 0:ebe71c7e7854 | 90 | printf ("Buffer contents: "); |
DVLevine | 0:ebe71c7e7854 | 91 | while (!buf.empty()) { |
DVLevine | 0:ebe71c7e7854 | 92 | buf.pop(data); |
DVLevine | 0:ebe71c7e7854 | 93 | printf("%c", data); |
DVLevine | 0:ebe71c7e7854 | 94 | } |
DVLevine | 0:ebe71c7e7854 | 95 | printf("\n"); |
DVLevine | 0:ebe71c7e7854 | 96 | |
DVLevine | 0:ebe71c7e7854 | 97 | printf("Circular buffer is full: \"%s\" or empty: \"%s\" \n", |
DVLevine | 0:ebe71c7e7854 | 98 | (buf.full()? "true":"false"), |
DVLevine | 0:ebe71c7e7854 | 99 | (buf.empty()? "true":"false") ); |
DVLevine | 0:ebe71c7e7854 | 100 | |
DVLevine | 0:ebe71c7e7854 | 101 | return 0; |
DVLevine | 0:ebe71c7e7854 | 102 | |
DVLevine | 0:ebe71c7e7854 | 103 | */ |