Needs some work

Dependencies:   mbed

Committer:
markco24
Date:
Wed Mar 10 21:57:44 2010 +0000
Revision:
0:0ec25826c208

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markco24 0:0ec25826c208 1 #include "mbed.h"
markco24 0:0ec25826c208 2 #include "TextLCD.h"
markco24 0:0ec25826c208 3 #include "data.h"
markco24 0:0ec25826c208 4 // Green wire to pin13
markco24 0:0ec25826c208 5 // White wire to pin14
markco24 0:0ec25826c208 6
markco24 0:0ec25826c208 7 DigitalOut led1(LED1);
markco24 0:0ec25826c208 8 DigitalOut led2(LED2);
markco24 0:0ec25826c208 9 DigitalOut led3(LED3);
markco24 0:0ec25826c208 10 DigitalOut led4(LED4);
markco24 0:0ec25826c208 11 Serial pc(USBTX, USBRX);
markco24 0:0ec25826c208 12 Serial gps(p13, p14);
markco24 0:0ec25826c208 13 TextLCD lcd(p21, p22, p23, p24, p25, p27, p28);
markco24 0:0ec25826c208 14
markco24 0:0ec25826c208 15
markco24 0:0ec25826c208 16 int parseGSV() {
markco24 0:0ec25826c208 17 gsv2 = strtok(gsv1, ",");
markco24 0:0ec25826c208 18 while (gsv2 != NULL) {
markco24 0:0ec25826c208 19 sep++;
markco24 0:0ec25826c208 20 switch (sep) {
markco24 0:0ec25826c208 21 case 1:
markco24 0:0ec25826c208 22 // # of sentences
markco24 0:0ec25826c208 23 lcd.printf("#:%s\n",gsv2);
markco24 0:0ec25826c208 24 break;
markco24 0:0ec25826c208 25 case 2 :
markco24 0:0ec25826c208 26 // Sentence # of #
markco24 0:0ec25826c208 27 lcd.printf("S#:%s",gsv2);
markco24 0:0ec25826c208 28 break;
markco24 0:0ec25826c208 29 case 3 :
markco24 0:0ec25826c208 30 // Number of Satellites in view (Should give a hint as to how many cases to expect here...
markco24 0:0ec25826c208 31 lcd.printf("#:%s\n",gsv2);
markco24 0:0ec25826c208 32 break;
markco24 0:0ec25826c208 33 case 4 :
markco24 0:0ec25826c208 34 // Satellite PRN Number
markco24 0:0ec25826c208 35 lcd.printf("PRN#:%s\n",gsv2);
markco24 0:0ec25826c208 36 break;
markco24 0:0ec25826c208 37 case 5 :
markco24 0:0ec25826c208 38 // Elevation in Degrees
markco24 0:0ec25826c208 39 break;
markco24 0:0ec25826c208 40 case 6:
markco24 0:0ec25826c208 41 // Azimuth in Degrees
markco24 0:0ec25826c208 42 break;
markco24 0:0ec25826c208 43 case 7:
markco24 0:0ec25826c208 44 // SNR - up to 4 satellites per sentence
markco24 0:0ec25826c208 45 break;
markco24 0:0ec25826c208 46 }
markco24 0:0ec25826c208 47 gsv2 = strtok(NULL, ",");
markco24 0:0ec25826c208 48 }
markco24 0:0ec25826c208 49 sep = 0;
markco24 0:0ec25826c208 50 return *gsv2;
markco24 0:0ec25826c208 51 }
markco24 0:0ec25826c208 52
markco24 0:0ec25826c208 53 int parseRMC() {
markco24 0:0ec25826c208 54
markco24 0:0ec25826c208 55 return 0;
markco24 0:0ec25826c208 56 }
markco24 0:0ec25826c208 57
markco24 0:0ec25826c208 58 int parseGGA() {
markco24 0:0ec25826c208 59 gga2 = strtok(gga1, ",");
markco24 0:0ec25826c208 60 while (gga2 != NULL) {
markco24 0:0ec25826c208 61 sep++;
markco24 0:0ec25826c208 62 switch (sep) {
markco24 0:0ec25826c208 63 case 1:
markco24 0:0ec25826c208 64 if (mode == 1) {
markco24 0:0ec25826c208 65 lcd.cls();
markco24 0:0ec25826c208 66 lcd.printf("Time:%s\n",gga2);
markco24 0:0ec25826c208 67 }
markco24 0:0ec25826c208 68 break;
markco24 0:0ec25826c208 69 case 2 :
markco24 0:0ec25826c208 70 if (mode == 2) {
markco24 0:0ec25826c208 71 lcd.cls();
markco24 0:0ec25826c208 72 lcd.printf("Lat:%s",gga2);
markco24 0:0ec25826c208 73 }
markco24 0:0ec25826c208 74 break;
markco24 0:0ec25826c208 75 case 3 :
markco24 0:0ec25826c208 76 if (mode == 2) {
markco24 0:0ec25826c208 77 lcd.printf("%s\n",gga2);
markco24 0:0ec25826c208 78 wait(0.25);
markco24 0:0ec25826c208 79 }
markco24 0:0ec25826c208 80 break;
markco24 0:0ec25826c208 81 case 4 :
markco24 0:0ec25826c208 82 if (mode == 2) {
markco24 0:0ec25826c208 83 lcd.cls();
markco24 0:0ec25826c208 84 lcd.printf("Lon:%s",gga2);
markco24 0:0ec25826c208 85 }
markco24 0:0ec25826c208 86 break;
markco24 0:0ec25826c208 87 case 5 :
markco24 0:0ec25826c208 88 if (mode == 2) {
markco24 0:0ec25826c208 89 lcd.printf("%s\n",gga2);
markco24 0:0ec25826c208 90 wait(0.25);
markco24 0:0ec25826c208 91 }
markco24 0:0ec25826c208 92 break;
markco24 0:0ec25826c208 93 case 6:
markco24 0:0ec25826c208 94 if (mode == 1) {
markco24 0:0ec25826c208 95 if (gga2 == "0") {
markco24 0:0ec25826c208 96 fix = "Invalid";
markco24 0:0ec25826c208 97 }
markco24 0:0ec25826c208 98 if (gga2 == "1") {
markco24 0:0ec25826c208 99 fix = "GPS Fix (SPS)";
markco24 0:0ec25826c208 100 }
markco24 0:0ec25826c208 101 if (gga2 == "2") {
markco24 0:0ec25826c208 102 fix = "DGPS Fix";
markco24 0:0ec25826c208 103 }
markco24 0:0ec25826c208 104 if (gga2 == "3") {
markco24 0:0ec25826c208 105 fix = "PPS Fix";
markco24 0:0ec25826c208 106 }
markco24 0:0ec25826c208 107 if (gga2 == "4") {
markco24 0:0ec25826c208 108 fix = "Real Time Kinematic";
markco24 0:0ec25826c208 109 }
markco24 0:0ec25826c208 110 if (gga2 == "5") {
markco24 0:0ec25826c208 111 fix = "Float RTK";
markco24 0:0ec25826c208 112 }
markco24 0:0ec25826c208 113 if (gga2 == "6") {
markco24 0:0ec25826c208 114 fix = "Estimated (Dead Reckoning)";
markco24 0:0ec25826c208 115 }
markco24 0:0ec25826c208 116 if (gga2 == "7") {
markco24 0:0ec25826c208 117 fix = "Manual Input Mode";
markco24 0:0ec25826c208 118 }
markco24 0:0ec25826c208 119 if (gga2 == "8") {
markco24 0:0ec25826c208 120 fix = "Simulation Mode";
markco24 0:0ec25826c208 121 }
markco24 0:0ec25826c208 122 lcd.printf("FIX: %s_%s",gga2,fix);
markco24 0:0ec25826c208 123 }
markco24 0:0ec25826c208 124 break;
markco24 0:0ec25826c208 125 }
markco24 0:0ec25826c208 126 gga2 = strtok(NULL, ",");
markco24 0:0ec25826c208 127 }
markco24 0:0ec25826c208 128 sep = 0;
markco24 0:0ec25826c208 129 return *gga2;
markco24 0:0ec25826c208 130 }
markco24 0:0ec25826c208 131
markco24 0:0ec25826c208 132 int getGPSstring(int str) {
markco24 0:0ec25826c208 133 if (gps.scanf("%s", &gpsString) ==1) {
markco24 0:0ec25826c208 134 if (str == 1) {
markco24 0:0ec25826c208 135 if (sscanf(gpsString, "$GPGSV,%s",gsv1) >= 1) {
markco24 0:0ec25826c208 136 sep = 0;
markco24 0:0ec25826c208 137 parseGSV();
markco24 0:0ec25826c208 138 }
markco24 0:0ec25826c208 139 return *gsv2;
markco24 0:0ec25826c208 140 }
markco24 0:0ec25826c208 141 if (str == 2) {
markco24 0:0ec25826c208 142 if (sscanf(gpsString, "$GPRMC,%s",rmc1) >= 1) {
markco24 0:0ec25826c208 143 sep = 0;
markco24 0:0ec25826c208 144 parseRMC();
markco24 0:0ec25826c208 145 }
markco24 0:0ec25826c208 146 return *rmc2;
markco24 0:0ec25826c208 147 }
markco24 0:0ec25826c208 148 if (str == 3) {
markco24 0:0ec25826c208 149 if (sscanf(gpsString, "$GPGGA,%s",gga1) >=1) {
markco24 0:0ec25826c208 150 sep = 0;
markco24 0:0ec25826c208 151 parseGGA();
markco24 0:0ec25826c208 152 }
markco24 0:0ec25826c208 153 return *gga2;
markco24 0:0ec25826c208 154 }
markco24 0:0ec25826c208 155 }
markco24 0:0ec25826c208 156 return 0;
markco24 0:0ec25826c208 157 }