FBRLogger final version

Dependencies:   EthernetInterface MSCAN Nanopb SDFileSystem mbed-rtos mbed

Committer:
intrinseca
Date:
Sun Feb 17 18:59:30 2013 +0000
Revision:
2:2400fab06b33
Parent:
1:5f51069d5e09
Child:
3:32206cf84eb4
Use MSCAN for CAN bus polling

Who changed what in which revision?

UserRevisionLine numberNew contents of line
intrinseca 1:5f51069d5e09 1 #include "SDHCFileSystem.h"
intrinseca 2:2400fab06b33 2 #include "CANComms.h"
intrinseca 2:2400fab06b33 3 #include "State.h"
intrinseca 1:5f51069d5e09 4 #include <stdint.h>
intrinseca 1:5f51069d5e09 5
intrinseca 2:2400fab06b33 6 State car;
intrinseca 2:2400fab06b33 7 CANComms* can;
intrinseca 2:2400fab06b33 8
intrinseca 2:2400fab06b33 9 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
intrinseca 2:2400fab06b33 10
intrinseca 2:2400fab06b33 11 AnalogIn accX(p19);
intrinseca 2:2400fab06b33 12 AnalogIn accY(p20);
intrinseca 2:2400fab06b33 13
intrinseca 2:2400fab06b33 14 Ticker sample;
intrinseca 1:5f51069d5e09 15
intrinseca 1:5f51069d5e09 16 char logFileName[50];
intrinseca 1:5f51069d5e09 17
intrinseca 1:5f51069d5e09 18 void writeLog_string(const char *data);
intrinseca 1:5f51069d5e09 19 void writeLog_data(const char *data, unsigned char length);
intrinseca 1:5f51069d5e09 20
intrinseca 1:5f51069d5e09 21 void writeLog_string(const char *data)
intrinseca 1:5f51069d5e09 22 {
intrinseca 1:5f51069d5e09 23 writeLog_data(data, strlen(data));
intrinseca 1:5f51069d5e09 24 }
intrinseca 1:5f51069d5e09 25
intrinseca 1:5f51069d5e09 26 void writeLog_data(const char *data, unsigned char length)
intrinseca 1:5f51069d5e09 27 {
intrinseca 1:5f51069d5e09 28 /*FILE *logFile;
intrinseca 1:5f51069d5e09 29
intrinseca 1:5f51069d5e09 30 logFile = fopen(&logFileName[0], "a");
intrinseca 1:5f51069d5e09 31
intrinseca 1:5f51069d5e09 32 if(logFile == NULL)
intrinseca 1:5f51069d5e09 33 {
intrinseca 1:5f51069d5e09 34 error("Could not open file for write\n");
intrinseca 1:5f51069d5e09 35 }
intrinseca 1:5f51069d5e09 36
intrinseca 1:5f51069d5e09 37 fwrite(data, 1, length, logFile);
intrinseca 1:5f51069d5e09 38
intrinseca 1:5f51069d5e09 39 fclose(logFile);*/
intrinseca 1:5f51069d5e09 40 }
intrinseca 1:5f51069d5e09 41
intrinseca 1:5f51069d5e09 42 bool file_exists(const char * filename)
intrinseca 1:5f51069d5e09 43 {
intrinseca 1:5f51069d5e09 44 if (FILE * file = fopen(filename, "r"))
intrinseca 1:5f51069d5e09 45 {
intrinseca 1:5f51069d5e09 46 fclose(file);
intrinseca 1:5f51069d5e09 47 return true;
intrinseca 1:5f51069d5e09 48 }
intrinseca 1:5f51069d5e09 49 return false;
intrinseca 1:5f51069d5e09 50 }
intrinseca 1:5f51069d5e09 51
intrinseca 2:2400fab06b33 52 void take_sample()
intrinseca 2:2400fab06b33 53 {
intrinseca 2:2400fab06b33 54 float x;
intrinseca 2:2400fab06b33 55 float y;
intrinseca 2:2400fab06b33 56
intrinseca 2:2400fab06b33 57 x = accX.read();
intrinseca 2:2400fab06b33 58 y = accY.read();
intrinseca 2:2400fab06b33 59
intrinseca 2:2400fab06b33 60 printf("X: %4.3f Y:%4.3f\n", x, y);
intrinseca 2:2400fab06b33 61 }
intrinseca 2:2400fab06b33 62
intrinseca 1:5f51069d5e09 63 int main() {
intrinseca 1:5f51069d5e09 64 char logIndex = 0;
intrinseca 1:5f51069d5e09 65
intrinseca 1:5f51069d5e09 66 printf("FBR CAN Data Logger\n");
intrinseca 1:5f51069d5e09 67
intrinseca 2:2400fab06b33 68 mkdir("/sd/fbr", 0777);
intrinseca 1:5f51069d5e09 69
intrinseca 1:5f51069d5e09 70 do
intrinseca 1:5f51069d5e09 71 {
intrinseca 1:5f51069d5e09 72 sprintf(&logFileName[0], "/sd/fbr/log.%d", logIndex);
intrinseca 1:5f51069d5e09 73 logIndex++;
intrinseca 1:5f51069d5e09 74 } while(file_exists(&logFileName[0]));
intrinseca 1:5f51069d5e09 75
intrinseca 2:2400fab06b33 76 printf("Log File: %s\n", &logFileName[0]);
intrinseca 1:5f51069d5e09 77
intrinseca 1:5f51069d5e09 78 printf("Listening Started\n");
intrinseca 1:5f51069d5e09 79
intrinseca 2:2400fab06b33 80 can = CANComms(&car);
intrinseca 1:5f51069d5e09 81
intrinseca 2:2400fab06b33 82 sample.attach(&take_sample, 0.5);
intrinseca 1:5f51069d5e09 83
intrinseca 1:5f51069d5e09 84 while(true)
intrinseca 1:5f51069d5e09 85 {
intrinseca 1:5f51069d5e09 86 __wfi();
intrinseca 1:5f51069d5e09 87 }
intrinseca 1:5f51069d5e09 88 }