External memory log

Dependents:   Q2_Stabi

MemLog.cpp

Committer:
Decimus
Date:
2016-05-30
Revision:
0:b631881feed3

File content as of revision 0:b631881feed3:

/* Log system for internal memory flash
* Copyright (c) 2013 Oleg Evsegneev
* Released under the MIT License: http://mbed.org/license/mit
*/
 
#include "mbed.h"
#include "MemLog.h"

MemLog::MemLog( short cols, short rows ): _local("local") {
    _cols = cols;
    _rows = rows;
    _addr = 0;
    _row = 0;
}

void MemLog::log( float val ) {
    if( _addr >= _rows*_cols )
        return; // can't write
    _data[_addr++] = val;
    if( ( _addr % _cols) == 0 )
        _row++;
}

void MemLog::save() {
    FILE *fp = fopen(LOG_FILE, "w");
    unsigned short addr = 0;
    
    for( short i=0; i<_row; i++){
        for( short k=0; k<_cols; k++){
            fprintf( fp, "%.4f", _data[addr++]);
            if( k < _cols-1 )
                fprintf( fp, "\t");
        }
        fprintf( fp, "\r\n");
    }
    fclose(fp);
    _addr = 0;
    _row = 0;    
}