Swimate V2 without RTOS code

Dependencies:   Adafruit_GFX_128x64 DS3231 PinDetect SDFileSystem USBDevice mbed RealtimeMath MODSERIAL

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?

UserRevisionLine numberNew 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 }