Swimate V2 without RTOS code
Dependencies: Adafruit_GFX_128x64 DS3231 PinDetect SDFileSystem USBDevice mbed RealtimeMath MODSERIAL
log_data.cpp@13:227a6cfd2097, 2014-05-28 (annotated)
- Committer:
- paulbartell
- Date:
- Wed May 28 22:56:25 2014 +0000
- Revision:
- 13:227a6cfd2097
- Parent:
- 12:bf282a100fbc
- Child:
- 17:fb8415091770
- Child:
- 18:06b718f8e6fd
Started bluetooth functionality.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ellingjp | 8:8430a5c0914c | 1 | #include "mbed.h" |
ellingjp | 8:8430a5c0914c | 2 | #include "log_data.h" |
ellingjp | 8:8430a5c0914c | 3 | #include "SDFileSystem.h" |
ellingjp | 8:8430a5c0914c | 4 | #include "helper_3dmath.h" |
ellingjp | 8:8430a5c0914c | 5 | #include "debug.h" |
paulbartell | 13:227a6cfd2097 | 6 | #include "pins.h" |
ellingjp | 8:8430a5c0914c | 7 | |
ellingjp | 8:8430a5c0914c | 8 | // SD Card |
ellingjp | 8:8430a5c0914c | 9 | SDFileSystem sd(P0_21, P0_22, P1_15, P1_19, "sd"); // MOSI, MISO, SCLK, SSEL SPI1 |
ellingjp | 8:8430a5c0914c | 10 | |
paulbartell | 13:227a6cfd2097 | 11 | |
ellingjp | 12:bf282a100fbc | 12 | |
ellingjp | 8:8430a5c0914c | 13 | // Logging vars |
ellingjp | 9:a711b5b34d73 | 14 | FILE *accelFile; |
ellingjp | 9:a711b5b34d73 | 15 | FILE *splitFile; |
ellingjp | 8:8430a5c0914c | 16 | |
ellingjp | 8:8430a5c0914c | 17 | /* Returns true if logging was successfully initialized, false otherwise */ |
paulbartell | 13:227a6cfd2097 | 18 | bool log_init(char* timestamp) { |
paulbartell | 13:227a6cfd2097 | 19 | char dataLog[33] = "/sd/00-00-0000 00:00:00 data.log"; |
paulbartell | 13:227a6cfd2097 | 20 | if(true) // TODO: checkIf RTC is initialized properly |
paulbartell | 13:227a6cfd2097 | 21 | { |
paulbartell | 13:227a6cfd2097 | 22 | strncpy(&dataLog[4],timestamp,19); |
paulbartell | 13:227a6cfd2097 | 23 | } |
paulbartell | 13:227a6cfd2097 | 24 | accelFile = fopen(dataLog, "a"); |
ellingjp | 9:a711b5b34d73 | 25 | if (accelFile == NULL) { |
ellingjp | 9:a711b5b34d73 | 26 | PC_PRINTLNF("SD card initialization error: Failed to open %s", ACCEL_LOG); |
ellingjp | 8:8430a5c0914c | 27 | DIE(SD_ERROR_RATE); |
ellingjp | 8:8430a5c0914c | 28 | return false; |
ellingjp | 8:8430a5c0914c | 29 | } |
ellingjp | 9:a711b5b34d73 | 30 | |
ellingjp | 9:a711b5b34d73 | 31 | splitFile = fopen(SPLIT_LOG, "a"); |
ellingjp | 9:a711b5b34d73 | 32 | if (splitFile == NULL) { |
ellingjp | 9:a711b5b34d73 | 33 | PC_PRINTLNF("SD card initialization error: Failed to open %s", SPLIT_LOG); |
ellingjp | 9:a711b5b34d73 | 34 | DIE(SD_ERROR_RATE); |
ellingjp | 9:a711b5b34d73 | 35 | return false; |
ellingjp | 9:a711b5b34d73 | 36 | } |
ellingjp | 9:a711b5b34d73 | 37 | fprintf(accelFile, "---- BEGIN NEW DATASET ----\n"); |
ellingjp | 9:a711b5b34d73 | 38 | fprintf(splitFile, "---- BEGIN NEW DATASET ----\n"); |
ellingjp | 8:8430a5c0914c | 39 | return true; |
ellingjp | 8:8430a5c0914c | 40 | } |
ellingjp | 8:8430a5c0914c | 41 | |
ellingjp | 8:8430a5c0914c | 42 | /* Returns true if data was successfully logged, false otherwise |
ellingjp | 8:8430a5c0914c | 43 | Used for logging acceleration data */ |
ellingjp | 8:8430a5c0914c | 44 | bool log_data(VectorInt16 *data) { |
ellingjp | 9:a711b5b34d73 | 45 | if (accelFile != NULL) { |
ellingjp | 9:a711b5b34d73 | 46 | fprintf(accelFile, "%d, %d, %d\n", data->x, data->y, data->z); |
ellingjp | 8:8430a5c0914c | 47 | return true; |
ellingjp | 8:8430a5c0914c | 48 | } |
ellingjp | 8:8430a5c0914c | 49 | |
ellingjp | 8:8430a5c0914c | 50 | return false; |
ellingjp | 8:8430a5c0914c | 51 | } |
ellingjp | 8:8430a5c0914c | 52 | |
ellingjp | 8:8430a5c0914c | 53 | /* Returns true if data was successfully logged, false otherwise |
ellingjp | 8:8430a5c0914c | 54 | Used for logging split times */ |
ellingjp | 8:8430a5c0914c | 55 | bool log_data(uint16_t data) { |
ellingjp | 9:a711b5b34d73 | 56 | if (splitFile != NULL) { |
ellingjp | 9:a711b5b34d73 | 57 | fprintf(splitFile, "%d\n", data); |
ellingjp | 9:a711b5b34d73 | 58 | return true; |
ellingjp | 9:a711b5b34d73 | 59 | } |
ellingjp | 8:8430a5c0914c | 60 | |
ellingjp | 9:a711b5b34d73 | 61 | return false; |
ellingjp | 8:8430a5c0914c | 62 | } |
ellingjp | 8:8430a5c0914c | 63 | |
ellingjp | 8:8430a5c0914c | 64 | /* Returns true if logging was successfully closed, false otherwise */ |
ellingjp | 8:8430a5c0914c | 65 | bool log_close() { |
ellingjp | 9:a711b5b34d73 | 66 | // if (accelFile != NULL && splitFile != NULL) |
ellingjp | 9:a711b5b34d73 | 67 | // return ( (fclose(accelFile) == 0) && (fclose(splitFile) == 0) ); |
ellingjp | 8:8430a5c0914c | 68 | |
ellingjp | 9:a711b5b34d73 | 69 | fclose(accelFile); |
ellingjp | 9:a711b5b34d73 | 70 | fclose(splitFile); |
ellingjp | 9:a711b5b34d73 | 71 | |
ellingjp | 9:a711b5b34d73 | 72 | return true; |
ellingjp | 8:8430a5c0914c | 73 | } |