K64F based data logger for GPS (ublox MAX M8Q) & 6 Axis Sensor (FXOS8700Q) - Outputs to SD + UDP - Uses FRDM K64F + ublox "Cellular and positioning shield" (3G version)
Dependencies: MAX_M8Q_Capture EthernetInterface FXOS8700Q SDFileSystem eCompass_FPU_Lib mbed-rtos mbed
meta.cpp
- Committer:
- rlinnmoran
- Date:
- 2015-05-20
- Revision:
- 3:6085916c9d74
- Parent:
- 2:bcd60a69583f
File content as of revision 3:6085916c9d74:
#include "meta.h" #include "mbed.h" #include "eCompass_Lib.h" #include "MAX_M8Q.h" #include "debug.h" #include <string> // eCompass external declarations extern axis6_t axis6; // Structure to store 6Axis data extern int captureCompass(void const *argument); // Prototype extern gpsinfo_t gpsinfo; // Structure that stores GPS data extern int captureMAX_M8Q(void); // Prototype extern int sd_append(char*); // Prototype extern int UDPTransmit(char*,int); // Constructor - builds an object that gathers 6axis and GPS data MetaData::MetaData() { //while(1){led = !led;wait(0.5);} // Capture compass measurement D(printf("Starting compass measurement...\r\n")); capture6Axis(&axis6); // Capture GPS measurement D(printf("Starting GPS measurement...\r\n")); captureGPS(&gpsinfo); } MetaData::~MetaData(){} void MetaData::capture6Axis(axis6_t* metaAxis6){ // Perform compass measurement D(printf("Performing compass measurement\r\n")); if(captureCompass("")) D(printf("compass_thread failed:e001\r\n")); // Assign compass results to MetaData class D(printf("Assigning compass results to MetaData class\r\n")); // Roll, Pitch, Yaw and Compass from the eCompass algorithm roll = metaAxis6->roll; pitch = metaAxis6->pitch; yaw = metaAxis6->yaw; // Accelerometer data converted to G's fGax = metaAxis6->fGax; fGay = metaAxis6->fGay; fGaz = metaAxis6->fGaz; // Magnetometer data converted to UT's fUTmx = metaAxis6->fUTmx; fUTmy = metaAxis6->fUTmy; fUTmz = metaAxis6->fUTmz; // Data from Quaternion converted to floating point q0 = metaAxis6->q0; q1 = metaAxis6->q1; q2 = metaAxis6->q2; q3 = metaAxis6->q3; D(printf("Compass data measured & stored\r\n")); } void MetaData::captureGPS(gpsinfo_t* metaGpsinfo){ //Perform GPS Measurement D(printf("Performing GPS measurement\r\n")); if(captureMAX_M8Q()) D(printf("GPS (captureMAX_M8Q) failed:e001\r\n")); // Assign GPS results to MetaData class D(printf("Assign GPS results to MetaData class\r\n")); lat = metaGpsinfo->lat; // GPS Latitude (deg) lng = metaGpsinfo->lng; // GPS Longitude (deg) alt = metaGpsinfo->alt; // GPS Altitude (m) NS = metaGpsinfo->NS; // GPS NS indicator EW = metaGpsinfo->EW; // GPS EW indicator spd = metaGpsinfo->spd; // GPS Speed (kmph) utc = metaGpsinfo->utc; // GPS UTC time (hhmmss.ss) dte = metaGpsinfo->dte; // GPS Date (ddmmyy) D(printf("GPS data measured & stored\r\n")); } void MetaData::outputToCVSstring(void){ // int n; // n = sprintf(CSVOutput,"%.5f," sprintf(CSVOutput,"%.5f," "%.5f," "%.1f," "%c," "%c," "%.3f," "%.2f," "%d," "%d," "%d," "%d," "%2.3f," "%2.3f," "%2.3f," "%4.1f," "%4.1f," "%4.1f," "%1.4f," "%1.4f," "%1.4f," "%1.4f\r\n", lat, lng, alt, NS, EW, spd, utc, dte, roll, pitch, yaw, fGax, fGay, fGaz, fUTmx, fUTmy, fUTmz, q0, q1, q2, q3); D(printf("CSVOutput: %s\r\n",CSVOutput)); } int MetaData::appendSDcard(void) { return sd_append(CSVOutput); } int MetaData::transmitUDP(void) { return UDPTransmit(CSVOutput,sizeof(CSVOutput)); }