@krokodilushka/mavlink-parser-browserify 0.1.0
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/.devcontainer/Dockerfile +3 -0
- package/.devcontainer/devcontainer.json +9 -0
- package/LICENSE +165 -0
- package/README.md +7 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/lib/logger.d.ts +85 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +119 -0
- package/dist/lib/mavlink.d.ts +290 -0
- package/dist/lib/mavlink.d.ts.map +1 -0
- package/dist/lib/mavlink.js +738 -0
- package/dist/lib/serialization.d.ts +18 -0
- package/dist/lib/serialization.d.ts.map +1 -0
- package/dist/lib/serialization.js +184 -0
- package/dist/lib/utils.d.ts +36 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +77 -0
- package/examples/GH-5.bin +0 -0
- package/examples/mavlink-v2-3412-packets.bin +0 -0
- package/package.json +50 -0
- package/sanity-check.cjs +24 -0
- package/sanity-check.mjs +24 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { Transform, TransformCallback, Readable, Writable } from "stream";
|
|
4
|
+
import { uint8_t, uint16_t } from "mavlink-mappings";
|
|
5
|
+
import { MavLinkData, MavLinkDataConstructor } from "mavlink-mappings";
|
|
6
|
+
import { Logger } from "./logger";
|
|
7
|
+
/**
|
|
8
|
+
* Header definition of the MavLink packet
|
|
9
|
+
*/
|
|
10
|
+
export declare class MavLinkPacketHeader {
|
|
11
|
+
timestamp: bigint | null;
|
|
12
|
+
magic: number;
|
|
13
|
+
payloadLength: uint8_t;
|
|
14
|
+
incompatibilityFlags: uint8_t;
|
|
15
|
+
compatibilityFlags: uint8_t;
|
|
16
|
+
seq: uint8_t;
|
|
17
|
+
sysid: uint8_t;
|
|
18
|
+
compid: uint8_t;
|
|
19
|
+
msgid: uint8_t;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Base class for protocols
|
|
23
|
+
*
|
|
24
|
+
* Implements common functionality like getting the CRC and deserializing
|
|
25
|
+
* data classes from the given payload buffer
|
|
26
|
+
*/
|
|
27
|
+
export declare abstract class MavLinkProtocol {
|
|
28
|
+
protected readonly log: Logger;
|
|
29
|
+
static NAME: string;
|
|
30
|
+
static START_BYTE: number;
|
|
31
|
+
static PAYLOAD_OFFSET: number;
|
|
32
|
+
static CHECKSUM_LENGTH: number;
|
|
33
|
+
static SYS_ID: uint8_t;
|
|
34
|
+
static COMP_ID: uint8_t;
|
|
35
|
+
/**
|
|
36
|
+
* Serialize a message to a buffer
|
|
37
|
+
*/
|
|
38
|
+
abstract serialize(message: MavLinkData, seq: uint8_t): Buffer;
|
|
39
|
+
/**
|
|
40
|
+
* Deserialize packet header
|
|
41
|
+
*/
|
|
42
|
+
abstract header(buffer: Buffer, timestamp?: bigint): MavLinkPacketHeader;
|
|
43
|
+
/**
|
|
44
|
+
* Deserialize packet checksum
|
|
45
|
+
*/
|
|
46
|
+
abstract crc(buffer: Buffer): uint16_t;
|
|
47
|
+
/**
|
|
48
|
+
* Extract payload buffer
|
|
49
|
+
*
|
|
50
|
+
* The returned payload buffer needs to be long enough to read all
|
|
51
|
+
* the fields, including extensions that are sometimes not being sent
|
|
52
|
+
* from the transmitting system.
|
|
53
|
+
*/
|
|
54
|
+
abstract payload(buffer: Buffer): Buffer;
|
|
55
|
+
/**
|
|
56
|
+
* Deserialize payload into actual data class
|
|
57
|
+
*/
|
|
58
|
+
data<T extends MavLinkData>(payload: Buffer, clazz: MavLinkDataConstructor<T>): T;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* MavLink Protocol V1
|
|
62
|
+
*/
|
|
63
|
+
export declare class MavLinkProtocolV1 extends MavLinkProtocol {
|
|
64
|
+
sysid: uint8_t;
|
|
65
|
+
compid: uint8_t;
|
|
66
|
+
static NAME: string;
|
|
67
|
+
static START_BYTE: number;
|
|
68
|
+
static PAYLOAD_OFFSET: number;
|
|
69
|
+
constructor(sysid?: uint8_t, compid?: uint8_t);
|
|
70
|
+
serialize(message: MavLinkData, seq: number): Buffer;
|
|
71
|
+
header(buffer: Buffer, timestamp?: bigint): MavLinkPacketHeader;
|
|
72
|
+
/**
|
|
73
|
+
* Deserialize packet checksum
|
|
74
|
+
*/
|
|
75
|
+
crc(buffer: Buffer): uint16_t;
|
|
76
|
+
payload(buffer: Buffer): Buffer;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* MavLink Protocol V2
|
|
80
|
+
*/
|
|
81
|
+
export declare class MavLinkProtocolV2 extends MavLinkProtocol {
|
|
82
|
+
sysid: uint8_t;
|
|
83
|
+
compid: uint8_t;
|
|
84
|
+
incompatibilityFlags: uint8_t;
|
|
85
|
+
compatibilityFlags: uint8_t;
|
|
86
|
+
static NAME: string;
|
|
87
|
+
static START_BYTE: number;
|
|
88
|
+
static PAYLOAD_OFFSET: number;
|
|
89
|
+
static INCOMPATIBILITY_FLAGS: uint8_t;
|
|
90
|
+
static COMPATIBILITY_FLAGS: uint8_t;
|
|
91
|
+
static readonly IFLAG_SIGNED = 1;
|
|
92
|
+
constructor(sysid?: uint8_t, compid?: uint8_t, incompatibilityFlags?: uint8_t, compatibilityFlags?: uint8_t);
|
|
93
|
+
serialize(message: MavLinkData, seq: number): Buffer;
|
|
94
|
+
/**
|
|
95
|
+
* Create a signed package buffer
|
|
96
|
+
*
|
|
97
|
+
* @param buffer buffer with the original, unsigned package
|
|
98
|
+
* @param linkId id of the link
|
|
99
|
+
* @param key key to sign the package with
|
|
100
|
+
* @param timestamp optional timestamp for packet signing (default: Date.now())
|
|
101
|
+
* @returns signed package
|
|
102
|
+
*/
|
|
103
|
+
sign(buffer: Buffer, linkId: number, key: Buffer, timestamp?: number): Buffer;
|
|
104
|
+
private calculateTruncatedPayloadLength;
|
|
105
|
+
header(buffer: Buffer, timestamp?: bigint): MavLinkPacketHeader;
|
|
106
|
+
/**
|
|
107
|
+
* Deserialize packet checksum
|
|
108
|
+
*/
|
|
109
|
+
crc(buffer: Buffer): uint16_t;
|
|
110
|
+
payload(buffer: Buffer): Buffer;
|
|
111
|
+
signature(buffer: Buffer, header: MavLinkPacketHeader): MavLinkPacketSignature | null;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* MavLink packet signature definition
|
|
115
|
+
*/
|
|
116
|
+
export declare class MavLinkPacketSignature {
|
|
117
|
+
private readonly buffer;
|
|
118
|
+
static SIGNATURE_LENGTH: number;
|
|
119
|
+
/**
|
|
120
|
+
* Calculate key based on secret passphrase
|
|
121
|
+
*
|
|
122
|
+
* @param passphrase secret to generate the key
|
|
123
|
+
* @returns key as a buffer
|
|
124
|
+
*/
|
|
125
|
+
static key(passphrase: string): Buffer;
|
|
126
|
+
constructor(buffer: Buffer);
|
|
127
|
+
private get offset();
|
|
128
|
+
/**
|
|
129
|
+
* Get the linkId from signature
|
|
130
|
+
*/
|
|
131
|
+
get linkId(): uint8_t;
|
|
132
|
+
/**
|
|
133
|
+
* Set the linkId in signature
|
|
134
|
+
*/
|
|
135
|
+
set linkId(value: uint8_t);
|
|
136
|
+
/**
|
|
137
|
+
* Get the timestamp from signature
|
|
138
|
+
*/
|
|
139
|
+
get timestamp(): number;
|
|
140
|
+
/**
|
|
141
|
+
* Set the linkId in signature
|
|
142
|
+
*/
|
|
143
|
+
set timestamp(value: number);
|
|
144
|
+
/**
|
|
145
|
+
* Get the signature from signature
|
|
146
|
+
*/
|
|
147
|
+
get signature(): string;
|
|
148
|
+
/**
|
|
149
|
+
* Set the signature in signature
|
|
150
|
+
*/
|
|
151
|
+
set signature(value: string);
|
|
152
|
+
/**
|
|
153
|
+
* Calculates signature of the packet buffer using the provided secret.
|
|
154
|
+
* The secret is converted to a hash using the sha256 algorithm which matches
|
|
155
|
+
* the way Mission Planner creates keys.
|
|
156
|
+
*
|
|
157
|
+
* @param key the secret key (Buffer)
|
|
158
|
+
* @returns calculated signature value
|
|
159
|
+
*/
|
|
160
|
+
calculate(key: Buffer): string;
|
|
161
|
+
/**
|
|
162
|
+
* Checks the signature of the packet buffer against a given secret
|
|
163
|
+
* The secret is converted to a hash using the sha256 algorithm which matches
|
|
164
|
+
* the way Mission Planner creates keys.
|
|
165
|
+
*
|
|
166
|
+
* @param key key
|
|
167
|
+
* @returns true if the signature matches, false otherwise
|
|
168
|
+
*/
|
|
169
|
+
matches(key: Buffer): boolean;
|
|
170
|
+
toString(): string;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* MavLink packet definition
|
|
174
|
+
*/
|
|
175
|
+
export declare class MavLinkPacket {
|
|
176
|
+
readonly buffer: Buffer;
|
|
177
|
+
readonly header: MavLinkPacketHeader;
|
|
178
|
+
readonly payload: Buffer;
|
|
179
|
+
readonly crc: uint16_t;
|
|
180
|
+
readonly protocol: MavLinkProtocol;
|
|
181
|
+
readonly signature: MavLinkPacketSignature | null;
|
|
182
|
+
constructor(buffer: Buffer, header?: MavLinkPacketHeader, payload?: Buffer, crc?: uint16_t, protocol?: MavLinkProtocol, signature?: MavLinkPacketSignature | null);
|
|
183
|
+
/**
|
|
184
|
+
* Debug information about the packet
|
|
185
|
+
*
|
|
186
|
+
* @returns string representing debug information about a packet
|
|
187
|
+
*/
|
|
188
|
+
debug(): string;
|
|
189
|
+
private signatureToString;
|
|
190
|
+
}
|
|
191
|
+
type BufferCallback = (buffer: Buffer) => void;
|
|
192
|
+
/**
|
|
193
|
+
* A transform stream that splits the incomming data stream into chunks containing full MavLink messages
|
|
194
|
+
*/
|
|
195
|
+
export declare class MavLinkPacketSplitter extends Transform {
|
|
196
|
+
protected readonly log: Logger;
|
|
197
|
+
private buffer;
|
|
198
|
+
private onCrcError;
|
|
199
|
+
private timestamp;
|
|
200
|
+
private _validPackagesCount;
|
|
201
|
+
private _unknownPackagesCount;
|
|
202
|
+
private _invalidPackagesCount;
|
|
203
|
+
/**
|
|
204
|
+
* @param opts options to pass on to the Transform constructor
|
|
205
|
+
* @param verbose print diagnostic information
|
|
206
|
+
* @param onCrcError callback executed if there is a CRC error (mostly for debugging)
|
|
207
|
+
*/
|
|
208
|
+
constructor(opts?: {}, onCrcError?: BufferCallback);
|
|
209
|
+
_transform(chunk: Buffer, encoding: string, callback: TransformCallback): void;
|
|
210
|
+
protected findStartOfPacket(buffer: Buffer, offset?: number): number | null;
|
|
211
|
+
private getPacketProtocol;
|
|
212
|
+
private readPacketLength;
|
|
213
|
+
private validatePacket;
|
|
214
|
+
/**
|
|
215
|
+
* Checks if the buffer contains the entire message with signature
|
|
216
|
+
*
|
|
217
|
+
* @param buffer buffer with the message
|
|
218
|
+
*/
|
|
219
|
+
private isV2Signed;
|
|
220
|
+
/**
|
|
221
|
+
* Number of invalid packages
|
|
222
|
+
*/
|
|
223
|
+
get validPackages(): number;
|
|
224
|
+
/**
|
|
225
|
+
* Reset the number of valid packages
|
|
226
|
+
*/
|
|
227
|
+
resetValidPackagesCount(): void;
|
|
228
|
+
/**
|
|
229
|
+
* Number of invalid packages
|
|
230
|
+
*/
|
|
231
|
+
get invalidPackages(): number;
|
|
232
|
+
/**
|
|
233
|
+
* Reset the number of invalid packages
|
|
234
|
+
*/
|
|
235
|
+
resetInvalidPackagesCount(): void;
|
|
236
|
+
/**
|
|
237
|
+
* Number of invalid packages
|
|
238
|
+
*/
|
|
239
|
+
get unknownPackagesCount(): number;
|
|
240
|
+
/**
|
|
241
|
+
* Reset the number of invalid packages
|
|
242
|
+
*/
|
|
243
|
+
resetUnknownPackagesCount(): void;
|
|
244
|
+
}
|
|
245
|
+
export declare class MavLinkTLogPacketSplitter extends MavLinkPacketSplitter {
|
|
246
|
+
_transform(chunk: Buffer, encoding: string, callback: TransformCallback): void;
|
|
247
|
+
protected findStartOfPacket(buffer: Buffer, offset?: number): number | null;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* A transform stream that takes a buffer with data and converts it to MavLinkPacket object
|
|
251
|
+
*/
|
|
252
|
+
export declare class MavLinkPacketParser extends Transform {
|
|
253
|
+
protected readonly log: Logger;
|
|
254
|
+
constructor(opts?: {});
|
|
255
|
+
private getProtocol;
|
|
256
|
+
_transform({ buffer, timestamp, ...rest }: {
|
|
257
|
+
buffer?: Buffer | undefined;
|
|
258
|
+
timestamp?: null | undefined;
|
|
259
|
+
} | undefined, encoding: string, callback: TransformCallback): void;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Creates a MavLink packet stream reader that is reading packets from the given input
|
|
263
|
+
*
|
|
264
|
+
* @param input input stream to read from
|
|
265
|
+
*/
|
|
266
|
+
export declare function createMavLinkStream(input: Readable, onCrcError: BufferCallback): MavLinkPacketParser;
|
|
267
|
+
/**
|
|
268
|
+
* Send a packet to the stream
|
|
269
|
+
*
|
|
270
|
+
* @param stream Stream to send the data to
|
|
271
|
+
* @param msg message to serialize and send
|
|
272
|
+
* @param protocol protocol to use (default: MavLinkProtocolV1)
|
|
273
|
+
* @returns number of bytes sent
|
|
274
|
+
*/
|
|
275
|
+
export declare function send(stream: Writable, msg: MavLinkData, protocol?: MavLinkProtocol): Promise<unknown>;
|
|
276
|
+
/**
|
|
277
|
+
* Send a signed packet to the stream. Signed packets are always V2 protocol
|
|
278
|
+
*
|
|
279
|
+
* @param stream Stream to send the data to
|
|
280
|
+
* @param msg message to serialize and send
|
|
281
|
+
* @param key key to sign the message with
|
|
282
|
+
* @param linkId link id for the signature
|
|
283
|
+
* @param sysid system id
|
|
284
|
+
* @param compid component id
|
|
285
|
+
* @param timestamp optional timestamp for packet signing (default: Date.now())
|
|
286
|
+
* @returns number of bytes sent
|
|
287
|
+
*/
|
|
288
|
+
export declare function sendSigned(stream: Writable, msg: MavLinkData, key: Buffer, linkId?: uint8_t, sysid?: uint8_t, compid?: uint8_t, timestamp?: number): Promise<unknown>;
|
|
289
|
+
export {};
|
|
290
|
+
//# sourceMappingURL=mavlink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mavlink.d.ts","sourceRoot":"","sources":["../../lib/mavlink.ts"],"names":[],"mappings":"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"}
|