Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
MAA
Date:
Thu Mar 09 12:03:55 2017 +0000
Revision:
5:11782a2008c2
Parent:
4:c70ef089a3fd
Child:
18:87f243168f05
fungerende *.sps linie generator, mangler lidt fintuning.; fungerende tilf?jelse af sps linier til fil p? usb pen. ; ; TODO:; Dokumentation; forbedring af opstart.; data opsamling fra MAG; udbedring af uhensigtsm?ssig "opf?rsel"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MAA 0:b3313c5ffca3 1 #include "NMEA.h"
MAA 0:b3313c5ffca3 2
MAA 0:b3313c5ffca3 3 //constructor with a MODSERIAL pointer to the GPS comms as argument
MAA 0:b3313c5ffca3 4 NMEA::NMEA(){
MAA 0:b3313c5ffca3 5
MAA 0:b3313c5ffca3 6 currentGGAString.resize(128);
MAA 0:b3313c5ffca3 7 currentGPRMCString.resize(128);
MAA 0:b3313c5ffca3 8 currentUTCFromGPRMC.resize(20);
MAA 0:b3313c5ffca3 9 currentDATEFromGPRMC.resize(10);
MAA 4:c70ef089a3fd 10 currentLongitude.resize(15);
MAA 4:c70ef089a3fd 11 currentLatitude.resize(15);
MAA 0:b3313c5ffca3 12
MAA 0:b3313c5ffca3 13 chkSumGps.resize(2);
MAA 4:c70ef089a3fd 14
MAA 4:c70ef089a3fd 15 memset(tmpArrDeg,'\0',7);
MAA 4:c70ef089a3fd 16 memset(tmpArrMin, '\0', 7);
MAA 4:c70ef089a3fd 17 memset(tmpLongitude, '\0', 15);
MAA 4:c70ef089a3fd 18 memset(tmpLatitude, '\0', 15);
MAA 0:b3313c5ffca3 19
MAA 4:c70ef089a3fd 20 iterationIndex = 0;
MAA 4:c70ef089a3fd 21 longitudeDD = 0.0;
MAA 4:c70ef089a3fd 22 latitudeDD = 0.0;
MAA 4:c70ef089a3fd 23
MAA 4:c70ef089a3fd 24 north = false;
MAA 4:c70ef089a3fd 25 south = false;
MAA 4:c70ef089a3fd 26 east = false;
MAA 4:c70ef089a3fd 27 west = false;
MAA 0:b3313c5ffca3 28 };
MAA 0:b3313c5ffca3 29
MAA 0:b3313c5ffca3 30 //Returns true if GPS CRC corresponds to calculated CRC, else false.
MAA 4:c70ef089a3fd 31 bool NMEA::ValidateData(string cstStr){
MAA 0:b3313c5ffca3 32
MAA 0:b3313c5ffca3 33 //Temporary variables used locally only
MAA 0:b3313c5ffca3 34 chkSum = 0;
MAA 0:b3313c5ffca3 35
MAA 0:b3313c5ffca3 36 //If for some reason the index is wrong, and the first character is not
MAA 0:b3313c5ffca3 37 //the beginning dollar sign of a gps string, return false at once.
MAA 0:b3313c5ffca3 38 if(cstStr[0] != '$'){
MAA 0:b3313c5ffca3 39 return false;
MAA 0:b3313c5ffca3 40 }
MAA 0:b3313c5ffca3 41
MAA 0:b3313c5ffca3 42 iterationIndex = 0;
MAA 0:b3313c5ffca3 43
MAA 0:b3313c5ffca3 44 //initializing calculated checksum
MAA 0:b3313c5ffca3 45 chkSumGps = " ";
MAA 0:b3313c5ffca3 46
MAA 0:b3313c5ffca3 47 //Calculating checksum to verify string integrity
MAA 0:b3313c5ffca3 48 for(char i = 1; i < cstStr.size(); i++){
MAA 0:b3313c5ffca3 49 //If at end of line for crc check, break
MAA 0:b3313c5ffca3 50 if(cstStr[i] == '*' || cstStr[i] == '\0'){
MAA 0:b3313c5ffca3 51 iterationIndex = i;
MAA 0:b3313c5ffca3 52 break;
MAA 0:b3313c5ffca3 53 }
MAA 0:b3313c5ffca3 54 //XOR crc calculation
MAA 0:b3313c5ffca3 55 chkSum ^= cstStr[i];
MAA 0:b3313c5ffca3 56
MAA 0:b3313c5ffca3 57 }
MAA 0:b3313c5ffca3 58
MAA 0:b3313c5ffca3 59 //Moving the checksum received into chkSumGps
MAA 0:b3313c5ffca3 60 iterationIndex++;
MAA 0:b3313c5ffca3 61 chkSumGps[0] = cstStr[iterationIndex];
MAA 0:b3313c5ffca3 62 iterationIndex++;
MAA 0:b3313c5ffca3 63 chkSumGps[1] = cstStr[iterationIndex];
MAA 0:b3313c5ffca3 64
MAA 0:b3313c5ffca3 65 GpsCheck = strtol(chkSumGps.c_str(), NULL ,16);
MAA 0:b3313c5ffca3 66
MAA 0:b3313c5ffca3 67 //Verify received and calculated crc equality
MAA 0:b3313c5ffca3 68 if(GpsCheck == chkSum){
MAA 0:b3313c5ffca3 69 return true;
MAA 0:b3313c5ffca3 70 }
MAA 0:b3313c5ffca3 71
MAA 0:b3313c5ffca3 72 //If unequal crc bytes found return false
MAA 0:b3313c5ffca3 73 return false;
MAA 0:b3313c5ffca3 74 };
MAA 0:b3313c5ffca3 75
MAA 0:b3313c5ffca3 76
MAA 0:b3313c5ffca3 77 //Store function to move GGA to currentGGAString,
MAA 0:b3313c5ffca3 78 //or GPRMC to currentGPRMCString
MAA 3:38eabaa92552 79 void NMEA::StoreString(string cstStr){
MAA 0:b3313c5ffca3 80 static std::string gga = "$GPGGA";
MAA 0:b3313c5ffca3 81 static std::string rmc = "$GPRMC";
MAA 0:b3313c5ffca3 82
MAA 0:b3313c5ffca3 83 //If received string is a GPGGA string
MAA 0:b3313c5ffca3 84 //copy GPGGA string to currentGGAString
MAA 0:b3313c5ffca3 85 if(cstStr.compare(0, 6, gga) == 0){
MAA 3:38eabaa92552 86
MAA 0:b3313c5ffca3 87 //replace current valid gga string with new valid gga string
MAA 3:38eabaa92552 88 currentGGAString.replace(0, 128, cstStr);
MAA 3:38eabaa92552 89
MAA 0:b3313c5ffca3 90 }
MAA 0:b3313c5ffca3 91
MAA 0:b3313c5ffca3 92 //If received string is a GPRMC string
MAA 0:b3313c5ffca3 93 //copy GPRMC string to currentGPRMCString
MAA 0:b3313c5ffca3 94 if(cstStr.compare(0, 6, rmc) == 0){
MAA 3:38eabaa92552 95
MAA 0:b3313c5ffca3 96 //replace current valid rmc string with new valid rmc string
MAA 0:b3313c5ffca3 97 currentGPRMCString.replace(0, 128, cstStr);
MAA 3:38eabaa92552 98
MAA 0:b3313c5ffca3 99 }
MAA 0:b3313c5ffca3 100
MAA 0:b3313c5ffca3 101 };
MAA 0:b3313c5ffca3 102
MAA 0:b3313c5ffca3 103
MAA 0:b3313c5ffca3 104 //Parser / formatter function to get current UTC timestamp from GPRMC
MAA 4:c70ef089a3fd 105 void NMEA::ParseCurrentUTCFromGPRMC(){
MAA 0:b3313c5ffca3 106
MAA 2:39c4a85dc2a4 107 //getting utc from GPRMC string, assign to tmpStr
MAA 4:c70ef089a3fd 108 getXFromNMEAString(1,currentGPRMCString);
MAA 2:39c4a85dc2a4 109
MAA 2:39c4a85dc2a4 110 currentUTCFromGPRMC = "";
MAA 2:39c4a85dc2a4 111 currentUTCFromGPRMC.resize(20);
MAA 2:39c4a85dc2a4 112
MAA 2:39c4a85dc2a4 113 //if time format == 10 characters
MAA 2:39c4a85dc2a4 114 if(strlen(tmpStr.c_str()) == 10){
MAA 2:39c4a85dc2a4 115
MAA 2:39c4a85dc2a4 116 //HH
MAA 2:39c4a85dc2a4 117 currentUTCFromGPRMC[0] = tmpStr[0];
MAA 2:39c4a85dc2a4 118 currentUTCFromGPRMC[1] = tmpStr[1];
MAA 2:39c4a85dc2a4 119 currentUTCFromGPRMC[2] = ':';
MAA 2:39c4a85dc2a4 120
MAA 2:39c4a85dc2a4 121 //MM
MAA 2:39c4a85dc2a4 122 currentUTCFromGPRMC[3] = tmpStr[2];
MAA 2:39c4a85dc2a4 123 currentUTCFromGPRMC[4] = tmpStr[3];
MAA 2:39c4a85dc2a4 124 currentUTCFromGPRMC[5] = ':';
MAA 2:39c4a85dc2a4 125
MAA 2:39c4a85dc2a4 126 //SS
MAA 2:39c4a85dc2a4 127 currentUTCFromGPRMC[6] = tmpStr[4];
MAA 2:39c4a85dc2a4 128 currentUTCFromGPRMC[7] = tmpStr[5];
MAA 2:39c4a85dc2a4 129 currentUTCFromGPRMC[8] = '.';
MAA 2:39c4a85dc2a4 130
MAA 2:39c4a85dc2a4 131 //FFF
MAA 2:39c4a85dc2a4 132 currentUTCFromGPRMC[9] = tmpStr[7];
MAA 2:39c4a85dc2a4 133 currentUTCFromGPRMC[10] = tmpStr[8];
MAA 2:39c4a85dc2a4 134 currentUTCFromGPRMC[11] = tmpStr[9];
MAA 2:39c4a85dc2a4 135 }
MAA 2:39c4a85dc2a4 136
MAA 2:39c4a85dc2a4 137 //if time format == 6 characters
MAA 2:39c4a85dc2a4 138 if(strlen(tmpStr.c_str()) == 6){
MAA 2:39c4a85dc2a4 139
MAA 2:39c4a85dc2a4 140 //HH
MAA 2:39c4a85dc2a4 141 currentUTCFromGPRMC[0] = tmpStr[0];
MAA 2:39c4a85dc2a4 142 currentUTCFromGPRMC[1] = tmpStr[1];
MAA 2:39c4a85dc2a4 143 currentUTCFromGPRMC[2] = ':';
MAA 2:39c4a85dc2a4 144
MAA 2:39c4a85dc2a4 145 //MM
MAA 2:39c4a85dc2a4 146 currentUTCFromGPRMC[3] = tmpStr[2];
MAA 2:39c4a85dc2a4 147 currentUTCFromGPRMC[4] = tmpStr[3];
MAA 2:39c4a85dc2a4 148 currentUTCFromGPRMC[5] = ':';
MAA 2:39c4a85dc2a4 149
MAA 2:39c4a85dc2a4 150 //SS
MAA 2:39c4a85dc2a4 151 currentUTCFromGPRMC[6] = tmpStr[4];
MAA 2:39c4a85dc2a4 152 currentUTCFromGPRMC[7] = tmpStr[5];
MAA 2:39c4a85dc2a4 153 currentUTCFromGPRMC[8] = '.';
MAA 2:39c4a85dc2a4 154
MAA 2:39c4a85dc2a4 155 //FFF
MAA 2:39c4a85dc2a4 156 currentUTCFromGPRMC[9] = '0';
MAA 2:39c4a85dc2a4 157 currentUTCFromGPRMC[10] = '0';
MAA 2:39c4a85dc2a4 158 currentUTCFromGPRMC[11] = '0';
MAA 2:39c4a85dc2a4 159 }
MAA 0:b3313c5ffca3 160
MAA 0:b3313c5ffca3 161 };
MAA 0:b3313c5ffca3 162
MAA 0:b3313c5ffca3 163 //Parser getting current Date from GPRMC
MAA 4:c70ef089a3fd 164 void NMEA::ParseCurrentDateFromGPRMC(){
MAA 2:39c4a85dc2a4 165
MAA 2:39c4a85dc2a4 166 //Getting date from GPRMC string, assigning to tmpStr
MAA 4:c70ef089a3fd 167 getXFromNMEAString(9,currentGPRMCString);
MAA 0:b3313c5ffca3 168
MAA 2:39c4a85dc2a4 169 currentDATEFromGPRMC = "";
MAA 2:39c4a85dc2a4 170 currentDATEFromGPRMC.resize(20);
MAA 2:39c4a85dc2a4 171
MAA 2:39c4a85dc2a4 172 //if date string is the expected length
MAA 2:39c4a85dc2a4 173 if(strlen(tmpStr.c_str()) == 6){
MAA 2:39c4a85dc2a4 174
MAA 2:39c4a85dc2a4 175 //Year
MAA 2:39c4a85dc2a4 176 currentDATEFromGPRMC[0] = '2';
MAA 2:39c4a85dc2a4 177 currentDATEFromGPRMC[1] = '0';
MAA 2:39c4a85dc2a4 178 currentDATEFromGPRMC[2] = tmpStr[4];
MAA 2:39c4a85dc2a4 179 currentDATEFromGPRMC[3] = tmpStr[5];
MAA 2:39c4a85dc2a4 180 currentDATEFromGPRMC[4] = '/';
MAA 2:39c4a85dc2a4 181
MAA 2:39c4a85dc2a4 182 //Month
MAA 2:39c4a85dc2a4 183 currentDATEFromGPRMC[5] = tmpStr[2];
MAA 2:39c4a85dc2a4 184 currentDATEFromGPRMC[6] = tmpStr[3];
MAA 2:39c4a85dc2a4 185 currentDATEFromGPRMC[7] = '/';
MAA 2:39c4a85dc2a4 186
MAA 2:39c4a85dc2a4 187 //Date
MAA 2:39c4a85dc2a4 188 currentDATEFromGPRMC[8] = tmpStr[0];
MAA 2:39c4a85dc2a4 189 currentDATEFromGPRMC[9] = tmpStr[1];
MAA 3:38eabaa92552 190 }
MAA 0:b3313c5ffca3 191 };
MAA 0:b3313c5ffca3 192
MAA 0:b3313c5ffca3 193 //Verification of gps fix, returns gps fix value character in ascii
MAA 3:38eabaa92552 194 bool NMEA::GGAFixVerification(){
MAA 3:38eabaa92552 195
MAA 0:b3313c5ffca3 196 //accessing the string after the sixth comma, which is the gga fix column
MAA 0:b3313c5ffca3 197
MAA 0:b3313c5ffca3 198 char commaCount = 0;
MAA 0:b3313c5ffca3 199 char index = 0;
MAA 5:11782a2008c2 200 char stringLength = strlen(currentGGAString.c_str());
MAA 0:b3313c5ffca3 201
MAA 5:11782a2008c2 202 while((commaCount < 7) && (currentGGAString[index] != '\0') && (index < stringLength) ){
MAA 0:b3313c5ffca3 203 if(currentGGAString[index] == ','){
MAA 0:b3313c5ffca3 204 commaCount += 1;
MAA 0:b3313c5ffca3 205 }
MAA 0:b3313c5ffca3 206
MAA 0:b3313c5ffca3 207
MAA 0:b3313c5ffca3 208 //if gga fix is 1 or 2, gga fix is sufficient, return true
MAA 0:b3313c5ffca3 209 if(commaCount == 6){
MAA 0:b3313c5ffca3 210 if(currentGGAString[index+1] == '1'){
MAA 0:b3313c5ffca3 211 return true;
MAA 0:b3313c5ffca3 212 }
MAA 0:b3313c5ffca3 213
MAA 0:b3313c5ffca3 214 if(currentGGAString[index+1] == '2'){
MAA 0:b3313c5ffca3 215 return true;
MAA 0:b3313c5ffca3 216 }
MAA 0:b3313c5ffca3 217
MAA 0:b3313c5ffca3 218 break;
MAA 0:b3313c5ffca3 219 }
MAA 0:b3313c5ffca3 220
MAA 0:b3313c5ffca3 221 index += 1;
MAA 0:b3313c5ffca3 222
MAA 0:b3313c5ffca3 223 }
MAA 3:38eabaa92552 224
MAA 3:38eabaa92552 225 return false;
MAA 3:38eabaa92552 226 };
MAA 3:38eabaa92552 227
MAA 3:38eabaa92552 228
MAA 3:38eabaa92552 229 //Parser getting current Latitude
MAA 4:c70ef089a3fd 230 void NMEA::ParseCurrentLatitudeFromGPRMC(){
MAA 0:b3313c5ffca3 231
MAA 4:c70ef089a3fd 232 north = false;
MAA 4:c70ef089a3fd 233 south = false;
MAA 4:c70ef089a3fd 234
MAA 4:c70ef089a3fd 235 memset(tmpArrDeg,'\0',7);
MAA 4:c70ef089a3fd 236 memset(tmpArrMin, '\0', 7);
MAA 4:c70ef089a3fd 237 memset(tmpLatitude, '\0', 15);
MAA 3:38eabaa92552 238 currentLatitude = "";
MAA 3:38eabaa92552 239 currentLatitude.resize(20);
MAA 3:38eabaa92552 240
MAA 4:c70ef089a3fd 241
MAA 4:c70ef089a3fd 242 //Getting Latitude from GPRMC string, assigning to tmpStr
MAA 4:c70ef089a3fd 243 getXFromNMEAString(3,currentGPRMCString);
MAA 4:c70ef089a3fd 244
MAA 4:c70ef089a3fd 245 tmpArrDeg[0] = tmpStr[0];
MAA 4:c70ef089a3fd 246 tmpArrDeg[1] = tmpStr[1];
MAA 3:38eabaa92552 247
MAA 4:c70ef089a3fd 248 tmpArrMin[0] = tmpStr[2];
MAA 4:c70ef089a3fd 249 tmpArrMin[1] = tmpStr[3];
MAA 4:c70ef089a3fd 250 tmpArrMin[2] = tmpStr[4];
MAA 4:c70ef089a3fd 251 tmpArrMin[3] = tmpStr[5];
MAA 4:c70ef089a3fd 252 tmpArrMin[4] = tmpStr[6];
MAA 4:c70ef089a3fd 253
MAA 3:38eabaa92552 254 //getting N/S
MAA 5:11782a2008c2 255 getXFromNMEAString(4,currentGPRMCString);
MAA 4:c70ef089a3fd 256 if(tmpStr[0] == 'N' || tmpStr[0] == 'n'){
MAA 4:c70ef089a3fd 257 north = true;
MAA 4:c70ef089a3fd 258 currentLatitude[0] = '+';
MAA 4:c70ef089a3fd 259 }
MAA 3:38eabaa92552 260
MAA 4:c70ef089a3fd 261 if(tmpStr[0] == 'S' || tmpStr[0] == 's'){
MAA 4:c70ef089a3fd 262 south = true;
MAA 4:c70ef089a3fd 263 currentLatitude[0] = '-';
MAA 4:c70ef089a3fd 264 }
MAA 4:c70ef089a3fd 265
MAA 3:38eabaa92552 266
MAA 4:c70ef089a3fd 267 latitudeDD = ((atof(tmpArrDeg) + (atof(tmpArrMin)/60)));
MAA 4:c70ef089a3fd 268
MAA 4:c70ef089a3fd 269 sprintf(tmpLatitude, "%0.6f",latitudeDD);
MAA 4:c70ef089a3fd 270 for(int i = 0; i < strlen(tmpLatitude); i++){
MAA 4:c70ef089a3fd 271 currentLatitude[i+1] = tmpLatitude[i];
MAA 4:c70ef089a3fd 272 }
MAA 3:38eabaa92552 273 };
MAA 3:38eabaa92552 274
MAA 3:38eabaa92552 275 //Parser getting current Longitude
MAA 4:c70ef089a3fd 276 void NMEA::ParseCurrentLongitudeFromGPRMC(){
MAA 4:c70ef089a3fd 277
MAA 4:c70ef089a3fd 278 east = false;
MAA 4:c70ef089a3fd 279 west = false;
MAA 4:c70ef089a3fd 280
MAA 4:c70ef089a3fd 281 memset(tmpArrDeg,'\0',7);
MAA 4:c70ef089a3fd 282 memset(tmpArrMin, '\0', 7);
MAA 4:c70ef089a3fd 283 memset(tmpLongitude, '\0', 15);
MAA 3:38eabaa92552 284 currentLongitude = "";
MAA 3:38eabaa92552 285 currentLongitude.resize(20);
MAA 3:38eabaa92552 286
MAA 4:c70ef089a3fd 287
MAA 4:c70ef089a3fd 288 //Getting Longitude from GPRMC string, assigning to tmpStr
MAA 4:c70ef089a3fd 289 getXFromNMEAString(5,currentGPRMCString);
MAA 4:c70ef089a3fd 290
MAA 4:c70ef089a3fd 291 tmpArrDeg[0] = tmpStr[0];
MAA 4:c70ef089a3fd 292 tmpArrDeg[1] = tmpStr[1];
MAA 4:c70ef089a3fd 293 tmpArrDeg[2] = tmpStr[2];
MAA 3:38eabaa92552 294
MAA 4:c70ef089a3fd 295 tmpArrMin[0] = tmpStr[3];
MAA 4:c70ef089a3fd 296 tmpArrMin[1] = tmpStr[4];
MAA 4:c70ef089a3fd 297 tmpArrMin[2] = tmpStr[5];
MAA 4:c70ef089a3fd 298 tmpArrMin[3] = tmpStr[6];
MAA 4:c70ef089a3fd 299 tmpArrMin[4] = tmpStr[7];
MAA 4:c70ef089a3fd 300 tmpArrMin[5] = tmpStr[8];
MAA 4:c70ef089a3fd 301 tmpArrMin[6] = tmpStr[9];
MAA 4:c70ef089a3fd 302
MAA 3:38eabaa92552 303 //getting E/W
MAA 5:11782a2008c2 304 getXFromNMEAString(6,currentGPRMCString);
MAA 4:c70ef089a3fd 305 if(tmpStr[0] == 'E' || tmpStr[0] == 'e'){
MAA 4:c70ef089a3fd 306 east = true;
MAA 4:c70ef089a3fd 307 currentLongitude[0] = '+';
MAA 4:c70ef089a3fd 308 }
MAA 4:c70ef089a3fd 309 if(tmpStr[0] == 'W' || tmpStr[0] == 'w'){
MAA 4:c70ef089a3fd 310 west = true;
MAA 4:c70ef089a3fd 311 currentLongitude[0] = '-';
MAA 4:c70ef089a3fd 312 }
MAA 4:c70ef089a3fd 313
MAA 4:c70ef089a3fd 314 longitudeDD = ((atof(tmpArrDeg) + (atof(tmpArrMin)/60)));
MAA 3:38eabaa92552 315
MAA 4:c70ef089a3fd 316 sprintf(tmpLongitude, "%0.6f",longitudeDD);
MAA 4:c70ef089a3fd 317 for(int i = 0; i < strlen(tmpLongitude); i++){
MAA 4:c70ef089a3fd 318 currentLongitude[i+1] = tmpLongitude[i];
MAA 4:c70ef089a3fd 319 }
MAA 4:c70ef089a3fd 320
MAA 2:39c4a85dc2a4 321 };
MAA 2:39c4a85dc2a4 322
MAA 4:c70ef089a3fd 323 void NMEA::getXFromNMEAString(int desiredCommaCount, string stringToParse){
MAA 2:39c4a85dc2a4 324
MAA 2:39c4a85dc2a4 325 //clearing tmpStr
MAA 2:39c4a85dc2a4 326 tmpStr = "";
MAA 3:38eabaa92552 327 tmpStr.resize(15);
MAA 5:11782a2008c2 328 char stringLength = strlen(stringToParse.c_str());
MAA 2:39c4a85dc2a4 329
MAA 2:39c4a85dc2a4 330 int commaCnt = 0;
MAA 2:39c4a85dc2a4 331 int index = 0;
MAA 2:39c4a85dc2a4 332 int idx = 0;
MAA 2:39c4a85dc2a4 333
MAA 5:11782a2008c2 334 while(commaCnt < (desiredCommaCount+1) && (index < stringLength)){
MAA 2:39c4a85dc2a4 335
MAA 2:39c4a85dc2a4 336 if(stringToParse[index] == ','){
MAA 2:39c4a85dc2a4 337 commaCnt += 1;
MAA 2:39c4a85dc2a4 338 }
MAA 2:39c4a85dc2a4 339
MAA 2:39c4a85dc2a4 340 if((commaCnt == desiredCommaCount) && (stringToParse[index] != ',')){
MAA 2:39c4a85dc2a4 341 tmpStr[idx] = stringToParse[index];
MAA 2:39c4a85dc2a4 342 idx += 1;
MAA 2:39c4a85dc2a4 343 }
MAA 2:39c4a85dc2a4 344
MAA 2:39c4a85dc2a4 345 index += 1;
MAA 2:39c4a85dc2a4 346 }
MAA 2:39c4a85dc2a4 347
MAA 0:b3313c5ffca3 348 };