Robert Linn-Moran / Mbed 2 deprecated GPS_6Axis_DataLogger_SD_UDP

Dependencies:   MAX_M8Q_Capture EthernetInterface FXOS8700Q SDFileSystem eCompass_FPU_Lib mbed-rtos mbed

meta.cpp

Committer:
rlinnmoran
Date:
2015-03-27
Revision:
0:77857a36b4ff
Child:
2:bcd60a69583f

File content as of revision 0:77857a36b4ff:

#include "meta.h"
#include "mbed.h"
#include "eCompass_Lib.h"
#include "MAX_M8Q.h"
#include <string>


DigitalOut led(LED_RED);


// 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

// Constructor - builds an object that gathers 6axis and GPS data
MetaData::MetaData()
{
    //while(1){led = !led;wait(0.5);}

    // Capture compass measurement
    printf("Starting compass measurement...\r\n");
    capture6Axis(&axis6);
        

    // Capture GPS measurement
    printf("Starting GPS measurement...\r\n");
    captureGPS(&gpsinfo);
}
    
    
void MetaData::capture6Axis(axis6_t* metaAxis6){
    
    // Perform compass measurement
    printf("Performing compass measurement\r\n");
    
    if(captureCompass(""))
        printf("compass_thread failed:e001\r\n");
    
    // Assign compass results to MetaData class
    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;
  
    printf("Compass data measured & stored\r\n");
}
    
    
void MetaData::captureGPS(gpsinfo_t* metaGpsinfo){
    
    //Perform GPS Measurement
    printf("Performing GPS measurement\r\n");
    if(captureMAX_M8Q())
        printf("GPS (captureMAX_M8Q) failed:e001\r\n");
    
    // Assign GPS results to MetaData class
    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)
      
    printf("GPS data measured & stored\r\n");
        
}

void MetaData::outputToCVSstring(void){
    
    int n;
    n = 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);
                        
    printf("CSVOutput: %s\r\n",CSVOutput);
            
}

void MetaData::appendSDcard(void)
{
    sd_append(CSVOutput);
}