External memory log
MemLog.cpp@0:b631881feed3, 2016-05-30 (annotated)
- Committer:
- Decimus
- Date:
- Mon May 30 08:10:08 2016 +0000
- Revision:
- 0:b631881feed3
[+]
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Decimus | 0:b631881feed3 | 1 | /* Log system for internal memory flash |
Decimus | 0:b631881feed3 | 2 | * Copyright (c) 2013 Oleg Evsegneev |
Decimus | 0:b631881feed3 | 3 | * Released under the MIT License: http://mbed.org/license/mit |
Decimus | 0:b631881feed3 | 4 | */ |
Decimus | 0:b631881feed3 | 5 | |
Decimus | 0:b631881feed3 | 6 | #include "mbed.h" |
Decimus | 0:b631881feed3 | 7 | #include "MemLog.h" |
Decimus | 0:b631881feed3 | 8 | |
Decimus | 0:b631881feed3 | 9 | MemLog::MemLog( short cols, short rows ): _local("local") { |
Decimus | 0:b631881feed3 | 10 | _cols = cols; |
Decimus | 0:b631881feed3 | 11 | _rows = rows; |
Decimus | 0:b631881feed3 | 12 | _addr = 0; |
Decimus | 0:b631881feed3 | 13 | _row = 0; |
Decimus | 0:b631881feed3 | 14 | } |
Decimus | 0:b631881feed3 | 15 | |
Decimus | 0:b631881feed3 | 16 | void MemLog::log( float val ) { |
Decimus | 0:b631881feed3 | 17 | if( _addr >= _rows*_cols ) |
Decimus | 0:b631881feed3 | 18 | return; // can't write |
Decimus | 0:b631881feed3 | 19 | _data[_addr++] = val; |
Decimus | 0:b631881feed3 | 20 | if( ( _addr % _cols) == 0 ) |
Decimus | 0:b631881feed3 | 21 | _row++; |
Decimus | 0:b631881feed3 | 22 | } |
Decimus | 0:b631881feed3 | 23 | |
Decimus | 0:b631881feed3 | 24 | void MemLog::save() { |
Decimus | 0:b631881feed3 | 25 | FILE *fp = fopen(LOG_FILE, "w"); |
Decimus | 0:b631881feed3 | 26 | unsigned short addr = 0; |
Decimus | 0:b631881feed3 | 27 | |
Decimus | 0:b631881feed3 | 28 | for( short i=0; i<_row; i++){ |
Decimus | 0:b631881feed3 | 29 | for( short k=0; k<_cols; k++){ |
Decimus | 0:b631881feed3 | 30 | fprintf( fp, "%.4f", _data[addr++]); |
Decimus | 0:b631881feed3 | 31 | if( k < _cols-1 ) |
Decimus | 0:b631881feed3 | 32 | fprintf( fp, "\t"); |
Decimus | 0:b631881feed3 | 33 | } |
Decimus | 0:b631881feed3 | 34 | fprintf( fp, "\r\n"); |
Decimus | 0:b631881feed3 | 35 | } |
Decimus | 0:b631881feed3 | 36 | fclose(fp); |
Decimus | 0:b631881feed3 | 37 | _addr = 0; |
Decimus | 0:b631881feed3 | 38 | _row = 0; |
Decimus | 0:b631881feed3 | 39 | } |