External memory log

Dependents:   Q2_Stabi

Committer:
Decimus
Date:
Mon May 30 08:10:08 2016 +0000
Revision:
0:b631881feed3
[+]

Who changed what in which revision?

UserRevisionLine numberNew 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 }