Needs some work

Dependencies:   mbed

gps.h

Committer:
markco24
Date:
2010-03-10
Revision:
0:0ec25826c208

File content as of revision 0:0ec25826c208:

#include "mbed.h"
#include "TextLCD.h"
#include "data.h"
// Green wire to pin13
// White wire to pin14

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
Serial pc(USBTX, USBRX);
Serial gps(p13, p14);
TextLCD lcd(p21, p22, p23, p24, p25, p27, p28);


int parseGSV() {
                    gsv2 = strtok(gsv1, ",");
                    while (gsv2 != NULL) {
                        sep++;
                        switch (sep) {
                            case 1:
                                // # of sentences
                                lcd.printf("#:%s\n",gsv2);
                            break;
                            case 2 :
                                // Sentence # of #
                                lcd.printf("S#:%s",gsv2);
                            break;
                            case 3 :
                                // Number of Satellites in view (Should give a hint as to how many cases to expect here...
                                lcd.printf("#:%s\n",gsv2);
                            break;
                            case 4 :
                                // Satellite PRN Number
                                lcd.printf("PRN#:%s\n",gsv2);
                            break;
                            case 5 :
                                // Elevation in Degrees
                            break;
                            case 6:
                                // Azimuth in Degrees 
                            break;
                            case 7:
                                // SNR - up to 4 satellites per sentence
                            break;
                        }
                        gsv2 = strtok(NULL, ",");
                    }
                    sep = 0;
    return *gsv2;
}

int parseRMC() {

    return 0;
}

int parseGGA() {
                    gga2 = strtok(gga1, ",");
                    while (gga2 != NULL) {
                        sep++;
                        switch (sep) {
                            case 1:
                                if (mode == 1) {
                                    lcd.cls();
                                    lcd.printf("Time:%s\n",gga2);
                                }
                            break;
                            case 2 :
                                if (mode == 2) {
                                    lcd.cls();
                                    lcd.printf("Lat:%s",gga2);
                                }
                            break;
                            case 3 :
                                if (mode == 2) {
                                    lcd.printf("%s\n",gga2);
                                    wait(0.25);
                                }
                            break;
                            case 4 :
                                if (mode == 2) {
                                    lcd.cls();
                                    lcd.printf("Lon:%s",gga2);
                                }
                            break;
                            case 5 :
                                if (mode == 2) {
                                    lcd.printf("%s\n",gga2);
                                    wait(0.25);
                                }
                            break;
                            case 6:
                                if (mode == 1) {
                                    if (gga2 == "0") {
                                        fix = "Invalid";
                                    }
                                    if (gga2 == "1") {
                                        fix = "GPS Fix (SPS)";
                                    }
                                    if (gga2 == "2") {
                                        fix = "DGPS Fix";
                                    }
                                    if (gga2 == "3") {
                                        fix = "PPS Fix";
                                    }
                                    if (gga2 == "4") {
                                        fix = "Real Time Kinematic";
                                    }
                                    if (gga2 == "5") {
                                        fix = "Float RTK";
                                    }
                                    if (gga2 == "6") {
                                        fix = "Estimated (Dead Reckoning)";
                                    }
                                    if (gga2 == "7") {
                                        fix = "Manual Input Mode";
                                    }
                                    if (gga2 == "8") {
                                        fix = "Simulation Mode";
                                    }
                                    lcd.printf("FIX: %s_%s",gga2,fix);
                                }
                            break;
                        }
                        gga2 = strtok(NULL, ",");
                    }
                    sep = 0;
    return *gga2;
}

int getGPSstring(int str) {
    if (gps.scanf("%s", &gpsString) ==1) {
        if (str == 1) {
            if (sscanf(gpsString, "$GPGSV,%s",gsv1) >= 1) {
                sep = 0;
                parseGSV();
            }
        return *gsv2;
        }
        if (str == 2) {
            if (sscanf(gpsString, "$GPRMC,%s",rmc1) >= 1) {
                sep = 0;
                parseRMC();
            }
        return *rmc2;
        }
        if (str == 3) {
            if (sscanf(gpsString, "$GPGGA,%s",gga1) >=1) {
                sep = 0;
                parseGGA();
            }
        return *gga2;
        }
    }
    return 0;
}