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

Function parse

app/rcc/scripts/parser/js/ubx_ublox.js:188–231  ·  view source on GitHub ↗

* Parses a UBX message frame into the predefined array structure. * * UBX message structure: * Bytes 0-1: Sync characters (0xB5 0x62) * Byte 2: Message class * Byte 3: Message ID * Bytes 4-5: Payload length (little-endian) * Bytes 6-n: Payload * Byte n+1: Checksum A

(frame)

Source from the content-addressed store, hash-verified

186 * @returns {array} Array of values mapped according to messageMap
187 */
188function parse(frame) {
189 if (frame.length < 6)
190 return parsedValues;
191
192 var msgClass = frame[0];
193 var msgId = frame[1];
194 var payloadLength = frame[2] | (frame[3] << 8);
195
196 if (frame.length < 4 + payloadLength + 2) {
197 console.error("Incomplete UBX frame");
198 return parsedValues;
199 }
200
201 var payload = [];
202 for (var i = 0; i < payloadLength; i++)
203 payload.push(frame[4 + i]);
204
205 var ckA = frame[4 + payloadLength];
206 var ckB = frame[4 + payloadLength + 1];
207
208 if (!validateChecksum(msgClass, msgId, payloadLength, payload, ckA, ckB)) {
209 console.error("UBX checksum validation failed");
210 return parsedValues;
211 }
212
213 var messageKey = "0x" + msgClass.toString(16).padStart(2, '0') +
214 "-0x" + msgId.toString(16).padStart(2, '0');
215
216 if (!messageMap.hasOwnProperty(messageKey))
217 return parsedValues;
218
219 var config = messageMap[messageKey];
220
221 try {
222 var values = config.parser(payload);
223 for (var i = 0; i < values.length && i < config.indices.length; i++)
224 parsedValues[config.indices[i]] = values[i];
225 }
226 catch (e) {
227 console.error("UBX parsing error:", e.message);
228 }
229
230 return parsedValues;
231}

Callers

nothing calls this directly

Calls 3

errorMethod · 0.80
pushMethod · 0.80
validateChecksumFunction · 0.70

Tested by

no test coverage detected