Log system based on external FRAM storage. Allow to collect float values in FRAM, and then store whole collection into file on flash.

Sample code

#include "mbed.h"
#include "FRAMLog.h"

SPI spi(p5,p6,p7);
FRAMLog flog(spi, p8, 4, 2048);
Serial pc(USBTX, USBRX);

int main() {
    for( int i=0; i<2048; i++){
        flog.log(i/4096.0);
        flog.log(i/(4096.0+1));
        flog.log(i/(4096.0+2));
        flog.log(i/(4096.0+3));
    }
    flog.save();
}
Committer:
Decimus
Date:
Sun Oct 21 20:29:57 2012 +0000
Revision:
1:4e5cda0920d3
Upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Decimus 1:4e5cda0920d3 1 /* Log system for FRAM+FLASH
Decimus 1:4e5cda0920d3 2 * Copyright (c) 2012 Oleg Evsegneev
Decimus 1:4e5cda0920d3 3 * Released under the MIT License: http://mbed.org/license/mit
Decimus 1:4e5cda0920d3 4 */
Decimus 1:4e5cda0920d3 5
Decimus 1:4e5cda0920d3 6 #ifndef MBED_FILELOG_H
Decimus 1:4e5cda0920d3 7 #define MBED_FILELOG_H
Decimus 1:4e5cda0920d3 8
Decimus 1:4e5cda0920d3 9 #include "mbed.h"
Decimus 1:4e5cda0920d3 10 #include "FRAMSPI.h"
Decimus 1:4e5cda0920d3 11
Decimus 1:4e5cda0920d3 12 #define LOG_FILE "/local/log.txt"
Decimus 1:4e5cda0920d3 13
Decimus 1:4e5cda0920d3 14 /* FRAM log system main class
Decimus 1:4e5cda0920d3 15 *
Decimus 1:4e5cda0920d3 16 * @code
Decimus 1:4e5cda0920d3 17 * #include "mbed.h"
Decimus 1:4e5cda0920d3 18 * #include "FRAMLog.h"
Decimus 1:4e5cda0920d3 19 *
Decimus 1:4e5cda0920d3 20 * SPI spi(p5,p6,p7);
Decimus 1:4e5cda0920d3 21 * FRAMLog flog(spi, p8, 4, 2048);
Decimus 1:4e5cda0920d3 22 * Serial pc(USBTX, USBRX);
Decimus 1:4e5cda0920d3 23 *
Decimus 1:4e5cda0920d3 24 * int main() {
Decimus 1:4e5cda0920d3 25 * for( int i=0; i<2048; i++){
Decimus 1:4e5cda0920d3 26 * flog.log(i/4096.0);
Decimus 1:4e5cda0920d3 27 * flog.log(i/(4096.0+1));
Decimus 1:4e5cda0920d3 28 * flog.log(i/(4096.0+2));
Decimus 1:4e5cda0920d3 29 * flog.log(i/(4096.0+3));
Decimus 1:4e5cda0920d3 30 * }
Decimus 1:4e5cda0920d3 31 * flog.save();
Decimus 1:4e5cda0920d3 32 * }
Decimus 1:4e5cda0920d3 33 * @endcode
Decimus 1:4e5cda0920d3 34 */
Decimus 1:4e5cda0920d3 35
Decimus 1:4e5cda0920d3 36 class FRAMLog {
Decimus 1:4e5cda0920d3 37
Decimus 1:4e5cda0920d3 38 public:
Decimus 1:4e5cda0920d3 39 FRAMLog( SPI& spi, PinName ncs, short cols, short rows );
Decimus 1:4e5cda0920d3 40
Decimus 1:4e5cda0920d3 41 /** Set new value to log
Decimus 1:4e5cda0920d3 42 *
Decimus 1:4e5cda0920d3 43 * @param value Value of log entry.
Decimus 1:4e5cda0920d3 44 */
Decimus 1:4e5cda0920d3 45 void log( float val );
Decimus 1:4e5cda0920d3 46
Decimus 1:4e5cda0920d3 47 /** Save log to file on flash
Decimus 1:4e5cda0920d3 48 *
Decimus 1:4e5cda0920d3 49 */
Decimus 1:4e5cda0920d3 50 void save();
Decimus 1:4e5cda0920d3 51
Decimus 1:4e5cda0920d3 52 protected:
Decimus 1:4e5cda0920d3 53 FRAMSPI _fram;
Decimus 1:4e5cda0920d3 54 LocalFileSystem _local;
Decimus 1:4e5cda0920d3 55 unsigned short _addr;
Decimus 1:4e5cda0920d3 56 short _cols;
Decimus 1:4e5cda0920d3 57 short _rows;
Decimus 1:4e5cda0920d3 58 short _row;
Decimus 1:4e5cda0920d3 59 void toArray( float val, char *bytes );
Decimus 1:4e5cda0920d3 60 float fromArray( char *bytes );
Decimus 1:4e5cda0920d3 61 };
Decimus 1:4e5cda0920d3 62
Decimus 1:4e5cda0920d3 63 #endif