@aircast-4g/mavlink 1.1.3 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -29
- package/dist/dialects/ardupilotmega/index.d.ts +7071 -5
- package/dist/dialects/ardupilotmega/index.js +17804 -0
- package/dist/dialects/ardupilotmega/index.js.map +1 -0
- package/dist/dialects/common/index.d.ts +5335 -5
- package/dist/dialects/common/index.js +13709 -0
- package/dist/dialects/common/index.js.map +1 -0
- package/dist/dialects/minimal/index.d.ts +359 -5
- package/dist/dialects/minimal/index.js +859 -0
- package/dist/dialects/minimal/index.js.map +1 -0
- package/dist/dialects/paparazzi/index.d.ts +5379 -0
- package/dist/dialects/paparazzi/index.js +13807 -0
- package/dist/dialects/paparazzi/index.js.map +1 -0
- package/dist/dialects/python_array_test/index.d.ts +5420 -0
- package/dist/dialects/python_array_test/index.js +13954 -0
- package/dist/dialects/python_array_test/index.js.map +1 -0
- package/dist/dialects/standard/index.d.ts +365 -0
- package/dist/dialects/standard/index.js +867 -0
- package/dist/dialects/standard/index.js.map +1 -0
- package/dist/dialects/test/index.d.ts +115 -0
- package/dist/dialects/test/index.js +409 -0
- package/dist/dialects/test/index.js.map +1 -0
- package/package.json +52 -18
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -174
- package/dist/cli.js.map +0 -1
- package/dist/dialects/ardupilotmega/decoder.js +0 -11930
- package/dist/dialects/ardupilotmega/enums.d.ts +0 -4631
- package/dist/dialects/ardupilotmega/messages.d.ts +0 -8088
- package/dist/dialects/ardupilotmega/types.d.ts +0 -2833
- package/dist/dialects/common/decoder.js +0 -9098
- package/dist/dialects/common/enums.d.ts +0 -3632
- package/dist/dialects/common/messages.d.ts +0 -6114
- package/dist/dialects/common/types.d.ts +0 -2159
- package/dist/dialects/minimal/decoder.js +0 -67
- package/dist/dialects/minimal/enums.d.ts +0 -494
- package/dist/dialects/minimal/messages.d.ts +0 -62
- package/dist/dialects/minimal/types.d.ts +0 -272
- package/dist/generator/batch-processor.d.ts +0 -17
- package/dist/generator/batch-processor.d.ts.map +0 -1
- package/dist/generator/batch-processor.js +0 -141
- package/dist/generator/batch-processor.js.map +0 -1
- package/dist/generator/generator.d.ts +0 -16
- package/dist/generator/generator.d.ts.map +0 -1
- package/dist/generator/generator.js +0 -136
- package/dist/generator/generator.js.map +0 -1
- package/dist/generator/template-engine.d.ts +0 -14
- package/dist/generator/template-engine.d.ts.map +0 -1
- package/dist/generator/template-engine.js +0 -270
- package/dist/generator/template-engine.js.map +0 -1
- package/dist/generator/type-converter.d.ts +0 -15
- package/dist/generator/type-converter.d.ts.map +0 -1
- package/dist/generator/type-converter.js +0 -179
- package/dist/generator/type-converter.js.map +0 -1
- package/dist/generator/xml-parser.d.ts +0 -13
- package/dist/generator/xml-parser.d.ts.map +0 -1
- package/dist/generator/xml-parser.js +0 -170
- package/dist/generator/xml-parser.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -37
- package/dist/index.js.map +0 -1
- package/dist/parser/crc.d.ts +0 -7
- package/dist/parser/crc.d.ts.map +0 -1
- package/dist/parser/crc.js +0 -182
- package/dist/parser/crc.js.map +0 -1
- package/dist/parser/frame-parser.d.ts +0 -15
- package/dist/parser/frame-parser.d.ts.map +0 -1
- package/dist/parser/frame-parser.js +0 -82
- package/dist/parser/frame-parser.js.map +0 -1
- package/dist/parser/index.d.ts +0 -6
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -28
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/mavlink-parser.d.ts +0 -35
- package/dist/parser/mavlink-parser.d.ts.map +0 -1
- package/dist/parser/mavlink-parser.js +0 -215
- package/dist/parser/mavlink-parser.js.map +0 -1
- package/dist/parser/message-decoder.d.ts +0 -47
- package/dist/parser/message-decoder.d.ts.map +0 -1
- package/dist/parser/message-decoder.js +0 -288
- package/dist/parser/message-decoder.js.map +0 -1
- package/dist/parser/types.d.ts +0 -60
- package/dist/parser/types.d.ts.map +0 -1
- package/dist/parser/types.js +0 -13
- package/dist/parser/types.js.map +0 -1
- package/dist/types.d.ts +0 -110
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MAVLinkParser = void 0;
|
|
4
|
-
// Main MAVLink parser that processes raw bytes and outputs JSON messages
|
|
5
|
-
const frame_parser_1 = require("./frame-parser");
|
|
6
|
-
const message_decoder_1 = require("./message-decoder");
|
|
7
|
-
const crc_1 = require("./crc");
|
|
8
|
-
const types_1 = require("./types");
|
|
9
|
-
class MAVLinkParser {
|
|
10
|
-
constructor(options = {}) {
|
|
11
|
-
this.bufferLength = 0;
|
|
12
|
-
this.frameParser = new frame_parser_1.MAVLinkFrameParser();
|
|
13
|
-
this.messageDecoder = new message_decoder_1.MAVLinkMessageDecoder();
|
|
14
|
-
this.buffer = new Uint8Array(1024); // Initial buffer size
|
|
15
|
-
this.options = {
|
|
16
|
-
validateCRC: true,
|
|
17
|
-
allowProtocolV1: true,
|
|
18
|
-
allowProtocolV2: true,
|
|
19
|
-
maxBufferSize: 4096,
|
|
20
|
-
...options
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Parse raw bytes from data channel and return JSON messages
|
|
25
|
-
* @param data Raw bytes from data channel (WebRTC, WebSocket, etc.)
|
|
26
|
-
* @returns Array of parsed MAVLink messages in JSON format
|
|
27
|
-
*/
|
|
28
|
-
parseBytes(data) {
|
|
29
|
-
const messages = [];
|
|
30
|
-
try {
|
|
31
|
-
// Append new data to buffer
|
|
32
|
-
this.appendToBuffer(data);
|
|
33
|
-
// Parse all complete frames from buffer
|
|
34
|
-
let processedBytes = 0;
|
|
35
|
-
while (processedBytes < this.bufferLength) {
|
|
36
|
-
const parseResult = this.tryParseFrame(processedBytes);
|
|
37
|
-
if (parseResult === null) {
|
|
38
|
-
// No complete frame found, wait for more data
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
if (parseResult instanceof Error) {
|
|
42
|
-
// Parse error, skip this byte and continue
|
|
43
|
-
processedBytes++;
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
const { frame, bytesConsumed } = parseResult;
|
|
47
|
-
processedBytes += bytesConsumed;
|
|
48
|
-
// Validate CRC if enabled
|
|
49
|
-
let crcValid = true;
|
|
50
|
-
if (this.options.validateCRC) {
|
|
51
|
-
crcValid = this.validateFrameCRC(frame);
|
|
52
|
-
if (!crcValid) {
|
|
53
|
-
console.warn(`CRC validation failed for message ${frame.message_id}`);
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// Decode message
|
|
58
|
-
try {
|
|
59
|
-
const frameWithCRC = { ...frame, crc_ok: crcValid };
|
|
60
|
-
const message = this.messageDecoder.decode(frameWithCRC);
|
|
61
|
-
messages.push(message);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
// Message decode error, continue with next frame
|
|
65
|
-
console.warn(`Failed to decode message ${frame.message_id}:`, error);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
// Remove processed bytes from buffer
|
|
69
|
-
if (processedBytes > 0) {
|
|
70
|
-
this.buffer.copyWithin(0, processedBytes, this.bufferLength);
|
|
71
|
-
this.bufferLength -= processedBytes;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
throw new types_1.ParserError(`Parser error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
76
|
-
}
|
|
77
|
-
return messages;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Parse a single raw message (for testing or when you have complete frames)
|
|
81
|
-
*/
|
|
82
|
-
parseMessage(data) {
|
|
83
|
-
try {
|
|
84
|
-
const frame = this.frameParser.parseFrame(data);
|
|
85
|
-
let crcValid = true;
|
|
86
|
-
if (this.options.validateCRC) {
|
|
87
|
-
crcValid = this.validateFrameCRC(frame);
|
|
88
|
-
if (!crcValid) {
|
|
89
|
-
throw new types_1.ParserError('CRC validation failed');
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const frameWithCRC = { ...frame, crc_ok: crcValid };
|
|
93
|
-
return this.messageDecoder.decode(frameWithCRC);
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
throw new types_1.ParserError(`Failed to parse message: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
appendToBuffer(data) {
|
|
100
|
-
// Check if we need to expand the buffer
|
|
101
|
-
if (this.buffer.length - this.bufferLength < data.length) {
|
|
102
|
-
// Check max buffer size
|
|
103
|
-
if (this.bufferLength + data.length > this.options.maxBufferSize) {
|
|
104
|
-
// Reset buffer to prevent memory issues
|
|
105
|
-
this.buffer = new Uint8Array(this.options.maxBufferSize);
|
|
106
|
-
this.bufferLength = 0;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
// Expand buffer
|
|
110
|
-
const newBuffer = new Uint8Array(this.buffer.length * 2);
|
|
111
|
-
newBuffer.set(this.buffer.subarray(0, this.bufferLength));
|
|
112
|
-
this.buffer = newBuffer;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Append new data
|
|
116
|
-
this.buffer.set(data, this.bufferLength);
|
|
117
|
-
this.bufferLength += data.length;
|
|
118
|
-
}
|
|
119
|
-
tryParseFrame(offset) {
|
|
120
|
-
if (offset >= this.bufferLength) {
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
// Find next frame start
|
|
124
|
-
let startIndex = -1;
|
|
125
|
-
for (let i = offset; i < this.bufferLength; i++) {
|
|
126
|
-
const byte = this.buffer[i];
|
|
127
|
-
if (byte === 0xFE || byte === 0xFD) { // MAVLink v1 or v2 magic
|
|
128
|
-
startIndex = i;
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (startIndex === -1) {
|
|
133
|
-
// No frame start found
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
// Try to parse frame from start position
|
|
138
|
-
const frameData = this.buffer.subarray(startIndex, this.bufferLength);
|
|
139
|
-
const frame = this.frameParser.parseFrame(frameData);
|
|
140
|
-
// Frame parsed successfully
|
|
141
|
-
const frameLength = this.getFrameLength(frame);
|
|
142
|
-
const bytesConsumed = startIndex - offset + frameLength;
|
|
143
|
-
return { frame, bytesConsumed };
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
// Not enough data or parse error
|
|
147
|
-
if (error instanceof Error && error.message.includes('Insufficient data')) {
|
|
148
|
-
return null; // Wait for more data
|
|
149
|
-
}
|
|
150
|
-
return error; // Parse error, will skip this byte
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
getFrameLength(frame) {
|
|
154
|
-
// Calculate total frame length including header, payload, checksum, and signature
|
|
155
|
-
const headerSize = frame.protocol_version === 2 ? 10 : 6;
|
|
156
|
-
const payloadSize = frame.payload.length;
|
|
157
|
-
const checksumSize = 2;
|
|
158
|
-
const signatureSize = frame.signature ? 13 : 0;
|
|
159
|
-
return headerSize + payloadSize + checksumSize + signatureSize;
|
|
160
|
-
}
|
|
161
|
-
validateFrameCRC(frame) {
|
|
162
|
-
try {
|
|
163
|
-
// Reconstruct the data for CRC calculation
|
|
164
|
-
const headerSize = frame.protocol_version === 2 ? 9 : 5; // Exclude magic byte
|
|
165
|
-
const data = new Uint8Array(headerSize + frame.payload.length);
|
|
166
|
-
let offset = 0;
|
|
167
|
-
if (frame.protocol_version === 2) {
|
|
168
|
-
data[offset++] = frame.payload.length;
|
|
169
|
-
data[offset++] = frame.incompatible_flags || 0;
|
|
170
|
-
data[offset++] = frame.compatible_flags || 0;
|
|
171
|
-
data[offset++] = frame.sequence;
|
|
172
|
-
data[offset++] = frame.system_id;
|
|
173
|
-
data[offset++] = frame.component_id;
|
|
174
|
-
data[offset++] = frame.message_id & 0xFF;
|
|
175
|
-
data[offset++] = (frame.message_id >> 8) & 0xFF;
|
|
176
|
-
data[offset++] = (frame.message_id >> 16) & 0xFF;
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
data[offset++] = frame.payload.length;
|
|
180
|
-
data[offset++] = frame.sequence;
|
|
181
|
-
data[offset++] = frame.system_id;
|
|
182
|
-
data[offset++] = frame.component_id;
|
|
183
|
-
data[offset++] = frame.message_id & 0xFF;
|
|
184
|
-
}
|
|
185
|
-
// Add payload
|
|
186
|
-
data.set(frame.payload, offset);
|
|
187
|
-
// Calculate CRC with extra byte
|
|
188
|
-
const crcExtra = crc_1.CRCCalculator.getCRCExtra(frame.message_id);
|
|
189
|
-
const calculatedCRC = crc_1.CRCCalculator.calculate(data, crcExtra);
|
|
190
|
-
return calculatedCRC === frame.checksum;
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
console.warn('CRC validation error:', error);
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Reset parser state (useful when connection is reset)
|
|
199
|
-
*/
|
|
200
|
-
reset() {
|
|
201
|
-
this.buffer.fill(0);
|
|
202
|
-
this.bufferLength = 0;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Get parser statistics
|
|
206
|
-
*/
|
|
207
|
-
getStats() {
|
|
208
|
-
return {
|
|
209
|
-
bufferSize: this.buffer.length,
|
|
210
|
-
bufferUsed: this.bufferLength
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
exports.MAVLinkParser = MAVLinkParser;
|
|
215
|
-
//# sourceMappingURL=mavlink-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mavlink-parser.js","sourceRoot":"","sources":["../../src/parser/mavlink-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ParsedMAVLinkMessage, MAVLinkFrame } from './types';
|
|
2
|
-
interface MessageDefinition {
|
|
3
|
-
id: number;
|
|
4
|
-
name: string;
|
|
5
|
-
fields: FieldDefinition[];
|
|
6
|
-
}
|
|
7
|
-
interface FieldDefinition {
|
|
8
|
-
name: string;
|
|
9
|
-
type: string;
|
|
10
|
-
arrayLength?: number;
|
|
11
|
-
extension?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare class MAVLinkMessageDecoder {
|
|
14
|
-
private messageDefinitions;
|
|
15
|
-
private definitionsLoaded;
|
|
16
|
-
constructor();
|
|
17
|
-
decode(frame: MAVLinkFrame & {
|
|
18
|
-
crc_ok?: boolean;
|
|
19
|
-
protocol_version?: 1 | 2;
|
|
20
|
-
}): ParsedMAVLinkMessage;
|
|
21
|
-
private decodePayload;
|
|
22
|
-
private getDefaultValue;
|
|
23
|
-
private decodeField;
|
|
24
|
-
private decodeSingleValue;
|
|
25
|
-
/**
|
|
26
|
-
* Load all available generated message definitions from built-in dialects
|
|
27
|
-
* This enables decoding of 319+ messages instead of just basic ones
|
|
28
|
-
*/
|
|
29
|
-
loadGeneratedDefinitions(): Promise<void>;
|
|
30
|
-
private initializeFromGeneratedDefinitions;
|
|
31
|
-
addCustomMessageDefinition(id: number, name: string, fields: FieldDefinition[]): void;
|
|
32
|
-
getMessageDefinition(id: number): MessageDefinition | undefined;
|
|
33
|
-
getSupportedMessageIds(): number[];
|
|
34
|
-
isDefinitionsLoaded(): boolean;
|
|
35
|
-
/**
|
|
36
|
-
* Wait for definitions to be loaded before proceeding
|
|
37
|
-
* Returns immediately if already loaded
|
|
38
|
-
*/
|
|
39
|
-
waitForDefinitions(): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Factory method to create decoder with all generated definitions loaded
|
|
42
|
-
* @returns Promise that resolves to decoder with 319+ message definitions
|
|
43
|
-
*/
|
|
44
|
-
static createWithGeneratedDefinitions(): Promise<MAVLinkMessageDecoder>;
|
|
45
|
-
}
|
|
46
|
-
export {};
|
|
47
|
-
//# sourceMappingURL=message-decoder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-decoder.d.ts","sourceRoot":"","sources":["../../src/parser/message-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE7D,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,iBAAiB,CAAkB;;IAU3C,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,oBAAoB;IAyClG,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,iBAAiB;IA2DzB;;;OAGG;IACU,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;YAIxC,kCAAkC;IAgCzC,0BAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAIrF,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI/D,sBAAsB,IAAI,MAAM,EAAE;IAIlC,mBAAmB,IAAI,OAAO;IAIrC;;;OAGG;IACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBhD;;;OAGG;WACiB,8BAA8B,IAAI,OAAO,CAAC,qBAAqB,CAAC;CAKrF"}
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.MAVLinkMessageDecoder = void 0;
|
|
37
|
-
class MAVLinkMessageDecoder {
|
|
38
|
-
constructor() {
|
|
39
|
-
this.messageDefinitions = new Map();
|
|
40
|
-
this.definitionsLoaded = false;
|
|
41
|
-
// Start loading generated definitions immediately
|
|
42
|
-
this.loadGeneratedDefinitions().catch(error => {
|
|
43
|
-
console.warn('Failed to load generated message definitions:', error);
|
|
44
|
-
console.warn('Messages will show as UNKNOWN until definitions are loaded');
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
decode(frame) {
|
|
48
|
-
const messageDef = this.messageDefinitions.get(frame.message_id);
|
|
49
|
-
// Determine protocol version from magic byte if not provided
|
|
50
|
-
const protocolVersion = frame.protocol_version || (frame.magic === 0xFD ? 2 : 1);
|
|
51
|
-
if (!messageDef) {
|
|
52
|
-
return {
|
|
53
|
-
timestamp: Date.now(),
|
|
54
|
-
system_id: frame.system_id,
|
|
55
|
-
component_id: frame.component_id,
|
|
56
|
-
message_id: frame.message_id,
|
|
57
|
-
message_name: `UNKNOWN_${frame.message_id}`,
|
|
58
|
-
sequence: frame.sequence,
|
|
59
|
-
payload: {
|
|
60
|
-
raw_payload: Array.from(frame.payload)
|
|
61
|
-
},
|
|
62
|
-
protocol_version: protocolVersion,
|
|
63
|
-
checksum: frame.checksum,
|
|
64
|
-
crc_ok: frame.crc_ok !== false,
|
|
65
|
-
signature: frame.signature
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
const payload = this.decodePayload(frame.payload, messageDef.fields);
|
|
69
|
-
return {
|
|
70
|
-
timestamp: Date.now(),
|
|
71
|
-
system_id: frame.system_id,
|
|
72
|
-
component_id: frame.component_id,
|
|
73
|
-
message_id: frame.message_id,
|
|
74
|
-
message_name: messageDef.name,
|
|
75
|
-
sequence: frame.sequence,
|
|
76
|
-
payload,
|
|
77
|
-
protocol_version: protocolVersion,
|
|
78
|
-
checksum: frame.checksum,
|
|
79
|
-
crc_ok: frame.crc_ok !== false,
|
|
80
|
-
signature: frame.signature
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
decodePayload(payload, fields) {
|
|
84
|
-
const result = {};
|
|
85
|
-
const view = new DataView(payload.buffer, payload.byteOffset, payload.byteLength);
|
|
86
|
-
let offset = 0;
|
|
87
|
-
for (const field of fields) {
|
|
88
|
-
if (offset >= payload.length) {
|
|
89
|
-
// Set default value for missing fields
|
|
90
|
-
result[field.name] = this.getDefaultValue(field);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
const { value, bytesRead } = this.decodeField(view, offset, field);
|
|
94
|
-
result[field.name] = value;
|
|
95
|
-
offset += bytesRead;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return result;
|
|
99
|
-
}
|
|
100
|
-
getDefaultValue(field) {
|
|
101
|
-
const isArray = field.arrayLength !== undefined && field.arrayLength > 1;
|
|
102
|
-
if (isArray) {
|
|
103
|
-
return [];
|
|
104
|
-
}
|
|
105
|
-
switch (field.type) {
|
|
106
|
-
case 'uint8_t':
|
|
107
|
-
case 'int8_t':
|
|
108
|
-
case 'uint16_t':
|
|
109
|
-
case 'int16_t':
|
|
110
|
-
case 'uint32_t':
|
|
111
|
-
case 'int32_t':
|
|
112
|
-
case 'float':
|
|
113
|
-
case 'double':
|
|
114
|
-
return 0;
|
|
115
|
-
case 'uint64_t':
|
|
116
|
-
case 'int64_t':
|
|
117
|
-
return 0n;
|
|
118
|
-
case 'char':
|
|
119
|
-
return '\0';
|
|
120
|
-
default:
|
|
121
|
-
if (field.type.startsWith('char[') || field.type.includes('[]')) {
|
|
122
|
-
return '';
|
|
123
|
-
}
|
|
124
|
-
return 0;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
decodeField(view, offset, field) {
|
|
128
|
-
const isArray = field.arrayLength !== undefined;
|
|
129
|
-
const arrayLength = field.arrayLength || 1;
|
|
130
|
-
if (isArray && arrayLength > 1) {
|
|
131
|
-
const values = [];
|
|
132
|
-
let totalBytes = 0;
|
|
133
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
134
|
-
if (offset + totalBytes >= view.byteLength)
|
|
135
|
-
break;
|
|
136
|
-
const { value, bytesRead } = this.decodeSingleValue(view, offset + totalBytes, field.type);
|
|
137
|
-
values.push(value);
|
|
138
|
-
totalBytes += bytesRead;
|
|
139
|
-
}
|
|
140
|
-
return { value: values, bytesRead: totalBytes };
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
return this.decodeSingleValue(view, offset, field.type);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
decodeSingleValue(view, offset, type) {
|
|
147
|
-
try {
|
|
148
|
-
switch (type) {
|
|
149
|
-
case 'uint8_t':
|
|
150
|
-
return { value: view.getUint8(offset), bytesRead: 1 };
|
|
151
|
-
case 'int8_t':
|
|
152
|
-
return { value: view.getInt8(offset), bytesRead: 1 };
|
|
153
|
-
case 'uint16_t':
|
|
154
|
-
return { value: view.getUint16(offset, true), bytesRead: 2 };
|
|
155
|
-
case 'int16_t':
|
|
156
|
-
return { value: view.getInt16(offset, true), bytesRead: 2 };
|
|
157
|
-
case 'uint32_t':
|
|
158
|
-
return { value: view.getUint32(offset, true), bytesRead: 4 };
|
|
159
|
-
case 'int32_t':
|
|
160
|
-
return { value: view.getInt32(offset, true), bytesRead: 4 };
|
|
161
|
-
case 'uint64_t':
|
|
162
|
-
return { value: view.getBigUint64(offset, true), bytesRead: 8 };
|
|
163
|
-
case 'int64_t':
|
|
164
|
-
return { value: view.getBigInt64(offset, true), bytesRead: 8 };
|
|
165
|
-
case 'float':
|
|
166
|
-
return { value: view.getFloat32(offset, true), bytesRead: 4 };
|
|
167
|
-
case 'double':
|
|
168
|
-
return { value: view.getFloat64(offset, true), bytesRead: 8 };
|
|
169
|
-
case 'char': {
|
|
170
|
-
const charCode = view.getUint8(offset);
|
|
171
|
-
return { value: charCode === 0 ? '\0' : String.fromCharCode(charCode), bytesRead: 1 };
|
|
172
|
-
}
|
|
173
|
-
default:
|
|
174
|
-
if (type.startsWith('char[') && type.endsWith(']')) {
|
|
175
|
-
const length = parseInt(type.slice(5, -1));
|
|
176
|
-
const chars = [];
|
|
177
|
-
for (let i = 0; i < length && offset + i < view.byteLength; i++) {
|
|
178
|
-
const charCode = view.getUint8(offset + i);
|
|
179
|
-
if (charCode === 0)
|
|
180
|
-
break;
|
|
181
|
-
chars.push(String.fromCharCode(charCode));
|
|
182
|
-
}
|
|
183
|
-
return { value: chars.join(''), bytesRead: length };
|
|
184
|
-
}
|
|
185
|
-
else if (type.includes('[') && type.includes(']')) {
|
|
186
|
-
const baseType = type.substring(0, type.indexOf('['));
|
|
187
|
-
const arrayLength = parseInt(type.substring(type.indexOf('[') + 1, type.indexOf(']')));
|
|
188
|
-
const values = [];
|
|
189
|
-
let totalBytes = 0;
|
|
190
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
191
|
-
if (offset + totalBytes >= view.byteLength)
|
|
192
|
-
break;
|
|
193
|
-
const { value, bytesRead } = this.decodeSingleValue(view, offset + totalBytes, baseType);
|
|
194
|
-
values.push(value);
|
|
195
|
-
totalBytes += bytesRead;
|
|
196
|
-
}
|
|
197
|
-
return { value: values, bytesRead: totalBytes };
|
|
198
|
-
}
|
|
199
|
-
return { value: view.getUint8(offset), bytesRead: 1 };
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
return { value: 0, bytesRead: 1 };
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Load all available generated message definitions from built-in dialects
|
|
208
|
-
* This enables decoding of 319+ messages instead of just basic ones
|
|
209
|
-
*/
|
|
210
|
-
async loadGeneratedDefinitions() {
|
|
211
|
-
await this.initializeFromGeneratedDefinitions();
|
|
212
|
-
}
|
|
213
|
-
async initializeFromGeneratedDefinitions() {
|
|
214
|
-
try {
|
|
215
|
-
// Load decoder definitions from dist folder
|
|
216
|
-
const dialects = ['common', 'ardupilotmega', 'minimal'];
|
|
217
|
-
const allDefinitions = new Map();
|
|
218
|
-
for (const dialectName of dialects) {
|
|
219
|
-
try {
|
|
220
|
-
const decoderModule = await Promise.resolve(`${`../../dist/dialects/${dialectName}/decoder`}`).then(s => __importStar(require(s)));
|
|
221
|
-
const exportName = `${dialectName.toUpperCase()}_MESSAGE_DEFINITIONS`;
|
|
222
|
-
const MESSAGE_DEFINITIONS = decoderModule[exportName];
|
|
223
|
-
if (MESSAGE_DEFINITIONS) {
|
|
224
|
-
for (const def of MESSAGE_DEFINITIONS) {
|
|
225
|
-
if (!allDefinitions.has(def.id)) {
|
|
226
|
-
allDefinitions.set(def.id, def);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
catch (error) {
|
|
232
|
-
console.warn(`Failed to load ${dialectName} decoder definitions:`, error);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
this.messageDefinitions = allDefinitions;
|
|
236
|
-
this.definitionsLoaded = true;
|
|
237
|
-
console.log(`Loaded ${this.messageDefinitions.size} message definitions from generated decoders`);
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
console.error('Failed to load generated definitions:', error);
|
|
241
|
-
this.definitionsLoaded = false;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
addCustomMessageDefinition(id, name, fields) {
|
|
245
|
-
this.messageDefinitions.set(id, { id, name, fields });
|
|
246
|
-
}
|
|
247
|
-
getMessageDefinition(id) {
|
|
248
|
-
return this.messageDefinitions.get(id);
|
|
249
|
-
}
|
|
250
|
-
getSupportedMessageIds() {
|
|
251
|
-
return Array.from(this.messageDefinitions.keys()).sort((a, b) => a - b);
|
|
252
|
-
}
|
|
253
|
-
isDefinitionsLoaded() {
|
|
254
|
-
return this.definitionsLoaded;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Wait for definitions to be loaded before proceeding
|
|
258
|
-
* Returns immediately if already loaded
|
|
259
|
-
*/
|
|
260
|
-
async waitForDefinitions() {
|
|
261
|
-
if (this.definitionsLoaded) {
|
|
262
|
-
return;
|
|
263
|
-
}
|
|
264
|
-
// Wait a bit for async loading to complete
|
|
265
|
-
return new Promise((resolve) => {
|
|
266
|
-
const checkLoaded = () => {
|
|
267
|
-
if (this.definitionsLoaded) {
|
|
268
|
-
resolve();
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
setTimeout(checkLoaded, 10);
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
checkLoaded();
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Factory method to create decoder with all generated definitions loaded
|
|
279
|
-
* @returns Promise that resolves to decoder with 319+ message definitions
|
|
280
|
-
*/
|
|
281
|
-
static async createWithGeneratedDefinitions() {
|
|
282
|
-
const decoder = new MAVLinkMessageDecoder();
|
|
283
|
-
await decoder.loadGeneratedDefinitions();
|
|
284
|
-
return decoder;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
exports.MAVLinkMessageDecoder = MAVLinkMessageDecoder;
|
|
288
|
-
//# sourceMappingURL=message-decoder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-decoder.js","sourceRoot":"","sources":["../../src/parser/message-decoder.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/types.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
export interface ParsedMAVLinkMessage {
|
|
2
|
-
timestamp: number;
|
|
3
|
-
system_id: number;
|
|
4
|
-
component_id: number;
|
|
5
|
-
message_id: number;
|
|
6
|
-
message_name: string;
|
|
7
|
-
sequence: number;
|
|
8
|
-
payload: Record<string, any>;
|
|
9
|
-
protocol_version: 1 | 2;
|
|
10
|
-
checksum: number;
|
|
11
|
-
crc_ok: boolean;
|
|
12
|
-
signature?: Uint8Array;
|
|
13
|
-
}
|
|
14
|
-
export interface MAVLinkFrame {
|
|
15
|
-
magic: number;
|
|
16
|
-
length: number;
|
|
17
|
-
incompatible_flags?: number;
|
|
18
|
-
compatible_flags?: number;
|
|
19
|
-
sequence: number;
|
|
20
|
-
system_id: number;
|
|
21
|
-
component_id: number;
|
|
22
|
-
message_id: number;
|
|
23
|
-
payload: Uint8Array;
|
|
24
|
-
checksum: number;
|
|
25
|
-
signature?: Uint8Array;
|
|
26
|
-
}
|
|
27
|
-
export interface ParserOptions {
|
|
28
|
-
validateCRC?: boolean;
|
|
29
|
-
allowProtocolV1?: boolean;
|
|
30
|
-
allowProtocolV2?: boolean;
|
|
31
|
-
maxBufferSize?: number;
|
|
32
|
-
}
|
|
33
|
-
export declare class ParserError extends Error {
|
|
34
|
-
frame?: any;
|
|
35
|
-
constructor(message: string, frame?: any);
|
|
36
|
-
}
|
|
37
|
-
export interface ParserResult {
|
|
38
|
-
messages: ParsedMAVLinkMessage[];
|
|
39
|
-
errors: ParserError[];
|
|
40
|
-
bytesProcessed: number;
|
|
41
|
-
remainingBytes: Uint8Array;
|
|
42
|
-
}
|
|
43
|
-
export interface FieldDescriptor {
|
|
44
|
-
name: string;
|
|
45
|
-
type: string;
|
|
46
|
-
enum?: string;
|
|
47
|
-
arrayLength?: number;
|
|
48
|
-
}
|
|
49
|
-
export interface MessageDescriptor {
|
|
50
|
-
id: number;
|
|
51
|
-
name: string;
|
|
52
|
-
fields: FieldDescriptor[];
|
|
53
|
-
crc_extra: number;
|
|
54
|
-
}
|
|
55
|
-
export interface DialectRegistry {
|
|
56
|
-
[dialectName: string]: {
|
|
57
|
-
[messageId: number]: MessageDescriptor;
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAY,SAAQ,KAAK;IAC7B,KAAK,CAAC,EAAE,GAAG,CAAC;gBAEP,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;CAKzC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,WAAW,EAAE,MAAM,GAAG;QACrB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAAC;KACxC,CAAC;CACH"}
|
package/dist/parser/types.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Parser types for MAVLink protocol parsing
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ParserError = void 0;
|
|
5
|
-
class ParserError extends Error {
|
|
6
|
-
constructor(message, frame) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.name = 'ParserError';
|
|
9
|
-
this.frame = frame;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
exports.ParserError = ParserError;
|
|
13
|
-
//# sourceMappingURL=types.js.map
|
package/dist/parser/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAqC5C,MAAa,WAAY,SAAQ,KAAK;IAGpC,YAAY,OAAe,EAAE,KAAW;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AARD,kCAQC"}
|