FBRLogger final version

Dependencies:   EthernetInterface MSCAN Nanopb SDFileSystem mbed-rtos mbed

Committer:
intrinseca
Date:
Sun Oct 07 17:00:03 2012 +0000
Revision:
0:6f69ea2839fa
Child:
1:5f51069d5e09
main: program to log CAN messages to SD in raw binary format

Who changed what in which revision?

UserRevisionLine numberNew contents of line
intrinseca 0:6f69ea2839fa 1 #include "SDHCFileSystem.h"
intrinseca 0:6f69ea2839fa 2
intrinseca 0:6f69ea2839fa 3 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
intrinseca 0:6f69ea2839fa 4 FILE *logFile;
intrinseca 0:6f69ea2839fa 5
intrinseca 0:6f69ea2839fa 6 CAN can1(p30, p29); //Needs to be CAN1 - SD takes CAN0
intrinseca 0:6f69ea2839fa 7
intrinseca 0:6f69ea2839fa 8 void can_interrupt()
intrinseca 0:6f69ea2839fa 9 {
intrinseca 0:6f69ea2839fa 10 CANMessage msg;
intrinseca 0:6f69ea2839fa 11
intrinseca 0:6f69ea2839fa 12 if(can1.read(msg))
intrinseca 0:6f69ea2839fa 13 {
intrinseca 0:6f69ea2839fa 14 fprintf(logFile, "Message Received\r\n");
intrinseca 0:6f69ea2839fa 15 }
intrinseca 0:6f69ea2839fa 16 }
intrinseca 0:6f69ea2839fa 17
intrinseca 0:6f69ea2839fa 18 bool file_exists(const char * filename)
intrinseca 0:6f69ea2839fa 19 {
intrinseca 0:6f69ea2839fa 20 if (FILE * file = fopen(filename, "r"))
intrinseca 0:6f69ea2839fa 21 {
intrinseca 0:6f69ea2839fa 22 fclose(file);
intrinseca 0:6f69ea2839fa 23 return true;
intrinseca 0:6f69ea2839fa 24 }
intrinseca 0:6f69ea2839fa 25 return false;
intrinseca 0:6f69ea2839fa 26 }
intrinseca 0:6f69ea2839fa 27
intrinseca 0:6f69ea2839fa 28 int main() {
intrinseca 0:6f69ea2839fa 29 char logIndex = 0;
intrinseca 0:6f69ea2839fa 30 char logFileName[50];
intrinseca 0:6f69ea2839fa 31
intrinseca 0:6f69ea2839fa 32 printf("Hello World!\r\n");
intrinseca 0:6f69ea2839fa 33
intrinseca 0:6f69ea2839fa 34 mkdir("/sd/fbr", 0777);
intrinseca 0:6f69ea2839fa 35
intrinseca 0:6f69ea2839fa 36 can1.attach(&can_interrupt);
intrinseca 0:6f69ea2839fa 37
intrinseca 0:6f69ea2839fa 38 do
intrinseca 0:6f69ea2839fa 39 {
intrinseca 0:6f69ea2839fa 40 sprintf(&logFileName[0], "/sd/fbr/log.%d", logIndex);
intrinseca 0:6f69ea2839fa 41 logIndex++;
intrinseca 0:6f69ea2839fa 42 } while(file_exists(&logFileName[0]));
intrinseca 0:6f69ea2839fa 43
intrinseca 0:6f69ea2839fa 44 printf(&logFileName[0]);
intrinseca 0:6f69ea2839fa 45
intrinseca 0:6f69ea2839fa 46 logFile = fopen(&logFileName[0], "w");
intrinseca 0:6f69ea2839fa 47
intrinseca 0:6f69ea2839fa 48 if(logFile == NULL) {
intrinseca 0:6f69ea2839fa 49 error("Could not open file for write\r\n");
intrinseca 0:6f69ea2839fa 50 }
intrinseca 0:6f69ea2839fa 51
intrinseca 0:6f69ea2839fa 52 fprintf(logFile, "FBR CAN Log File");
intrinseca 0:6f69ea2839fa 53
intrinseca 0:6f69ea2839fa 54 while(true)
intrinseca 0:6f69ea2839fa 55 {
intrinseca 0:6f69ea2839fa 56 __wfi();
intrinseca 0:6f69ea2839fa 57 }
intrinseca 0:6f69ea2839fa 58 }