Swimate V2 without RTOS code
Dependencies: Adafruit_GFX_128x64 DS3231 PinDetect SDFileSystem USBDevice mbed RealtimeMath MODSERIAL
log_data.cpp@12:bf282a100fbc, 2014-05-28 (annotated)
- Committer:
- ellingjp
- Date:
- Wed May 28 20:28:14 2014 +0000
- Revision:
- 12:bf282a100fbc
- Parent:
- 9:a711b5b34d73
- Child:
- 13:227a6cfd2097
- Child:
- 15:002bac432234
?
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" |
ellingjp | 8:8430a5c0914c | 6 | |
ellingjp | 8:8430a5c0914c | 7 | // SD Card |
ellingjp | 8:8430a5c0914c | 8 | SDFileSystem sd(P0_21, P0_22, P1_15, P1_19, "sd"); // MOSI, MISO, SCLK, SSEL SPI1 |
ellingjp | 8:8430a5c0914c | 9 | |
ellingjp | 12:bf282a100fbc | 10 | DS3231 rtc(I2C_SDA, I2C_SCL); |
ellingjp | 12:bf282a100fbc | 11 | |
ellingjp | 8:8430a5c0914c | 12 | // Logging vars |
ellingjp | 9:a711b5b34d73 | 13 | FILE *accelFile; |
ellingjp | 9:a711b5b34d73 | 14 | FILE *splitFile; |
ellingjp | 8:8430a5c0914c | 15 | |
ellingjp | 8:8430a5c0914c | 16 | /* Returns true if logging was successfully initialized, false otherwise */ |
ellingjp | 8:8430a5c0914c | 17 | bool log_init() { |
ellingjp | 9:a711b5b34d73 | 18 | accelFile = fopen(ACCEL_LOG, "a"); |
ellingjp | 9:a711b5b34d73 | 19 | if (accelFile == NULL) { |
ellingjp | 9:a711b5b34d73 | 20 | PC_PRINTLNF("SD card initialization error: Failed to open %s", ACCEL_LOG); |
ellingjp | 8:8430a5c0914c | 21 | DIE(SD_ERROR_RATE); |
ellingjp | 8:8430a5c0914c | 22 | return false; |
ellingjp | 8:8430a5c0914c | 23 | } |
ellingjp | 9:a711b5b34d73 | 24 | |
ellingjp | 9:a711b5b34d73 | 25 | splitFile = fopen(SPLIT_LOG, "a"); |
ellingjp | 9:a711b5b34d73 | 26 | if (splitFile == NULL) { |
ellingjp | 9:a711b5b34d73 | 27 | PC_PRINTLNF("SD card initialization error: Failed to open %s", SPLIT_LOG); |
ellingjp | 9:a711b5b34d73 | 28 | DIE(SD_ERROR_RATE); |
ellingjp | 9:a711b5b34d73 | 29 | return false; |
ellingjp | 9:a711b5b34d73 | 30 | } |
ellingjp | 9:a711b5b34d73 | 31 | fprintf(accelFile, "---- BEGIN NEW DATASET ----\n"); |
ellingjp | 9:a711b5b34d73 | 32 | fprintf(splitFile, "---- BEGIN NEW DATASET ----\n"); |
ellingjp | 8:8430a5c0914c | 33 | return true; |
ellingjp | 8:8430a5c0914c | 34 | } |
ellingjp | 8:8430a5c0914c | 35 | |
ellingjp | 8:8430a5c0914c | 36 | /* Returns true if data was successfully logged, false otherwise |
ellingjp | 8:8430a5c0914c | 37 | Used for logging acceleration data */ |
ellingjp | 8:8430a5c0914c | 38 | bool log_data(VectorInt16 *data) { |
ellingjp | 9:a711b5b34d73 | 39 | if (accelFile != NULL) { |
ellingjp | 9:a711b5b34d73 | 40 | fprintf(accelFile, "%d, %d, %d\n", data->x, data->y, data->z); |
ellingjp | 8:8430a5c0914c | 41 | return true; |
ellingjp | 8:8430a5c0914c | 42 | } |
ellingjp | 8:8430a5c0914c | 43 | |
ellingjp | 8:8430a5c0914c | 44 | return false; |
ellingjp | 8:8430a5c0914c | 45 | } |
ellingjp | 8:8430a5c0914c | 46 | |
ellingjp | 8:8430a5c0914c | 47 | /* Returns true if data was successfully logged, false otherwise |
ellingjp | 8:8430a5c0914c | 48 | Used for logging split times */ |
ellingjp | 8:8430a5c0914c | 49 | bool log_data(uint16_t data) { |
ellingjp | 9:a711b5b34d73 | 50 | if (splitFile != NULL) { |
ellingjp | 9:a711b5b34d73 | 51 | fprintf(splitFile, "%d\n", data); |
ellingjp | 9:a711b5b34d73 | 52 | return true; |
ellingjp | 9:a711b5b34d73 | 53 | } |
ellingjp | 8:8430a5c0914c | 54 | |
ellingjp | 9:a711b5b34d73 | 55 | return false; |
ellingjp | 8:8430a5c0914c | 56 | } |
ellingjp | 8:8430a5c0914c | 57 | |
ellingjp | 8:8430a5c0914c | 58 | /* Returns true if logging was successfully closed, false otherwise */ |
ellingjp | 8:8430a5c0914c | 59 | bool log_close() { |
ellingjp | 9:a711b5b34d73 | 60 | // if (accelFile != NULL && splitFile != NULL) |
ellingjp | 9:a711b5b34d73 | 61 | // return ( (fclose(accelFile) == 0) && (fclose(splitFile) == 0) ); |
ellingjp | 8:8430a5c0914c | 62 | |
ellingjp | 9:a711b5b34d73 | 63 | fclose(accelFile); |
ellingjp | 9:a711b5b34d73 | 64 | fclose(splitFile); |
ellingjp | 9:a711b5b34d73 | 65 | |
ellingjp | 9:a711b5b34d73 | 66 | return true; |
ellingjp | 8:8430a5c0914c | 67 | } |