MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / parse

Function parse

app/rcc/scripts/parser/js/nmea_0183.js:179–214  ·  view source on GitHub ↗

* Parses an NMEA 0183 sentence into the predefined array structure. * * NMEA sentence structure: * $AACCC,field1,field2,...,fieldN*CS * * $ - Start delimiter * AA - Talker ID (GP=GPS, GL=GLONASS, etc.) * CCC - Sentence formatter (GGA, RMC, etc.) * fields - Comma-separat

(frame)

Source from the content-addressed store, hash-verified

177 * @returns {array} Array of values mapped according to sentenceTypeMap
178 */
179function parse(frame) {
180 frame = frame.trim();
181
182 if (frame.charAt(0) !== '$')
183 return parsedValues;
184
185 // Validate checksum when present
186 if (frame.indexOf('*') !== -1 && !validateChecksum(frame)) {
187 console.error("NMEA checksum validation failed");
188 return parsedValues;
189 }
190
191 // Strip checksum suffix for field parsing
192 var starPos = frame.indexOf('*');
193 var dataStr = (starPos !== -1) ? frame.substring(0, starPos) : frame;
194 var fields = dataStr.split(',');
195
196 // Extract sentence type: "$GPGGA,..." → "GPGGA"
197 var sentenceId = fields[0].substring(1);
198
199 if (!sentenceTypeMap.hasOwnProperty(sentenceId))
200 return parsedValues;
201
202 var config = sentenceTypeMap[sentenceId];
203
204 try {
205 var values = config.parser(fields);
206 for (var i = 0; i < values.length && i < config.indices.length; i++)
207 parsedValues[config.indices[i]] = values[i];
208 }
209 catch (e) {
210 console.error("NMEA parsing error:", e.message);
211 }
212
213 return parsedValues;
214}

Callers

nothing calls this directly

Calls 3

errorMethod · 0.80
validateChecksumFunction · 0.70
indexOfMethod · 0.45

Tested by

no test coverage detected