FBRLogger final version
Dependencies: EthernetInterface MSCAN Nanopb SDFileSystem mbed-rtos mbed
main.cpp@0:6f69ea2839fa, 2012-10-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |