node-mavlink 1.2.1 → 1.3.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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -1
- package/dist/lib/logger.d.ts +2 -1
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +119 -1
- package/dist/lib/mavesp.d.ts +3 -1
- package/dist/lib/mavesp.d.ts.map +1 -0
- package/dist/lib/mavesp.js +101 -1
- package/dist/lib/mavlink.d.ts +14 -12
- package/dist/lib/mavlink.d.ts.map +1 -0
- package/dist/lib/mavlink.js +704 -1
- package/dist/lib/serialization.d.ts +9 -49
- package/dist/lib/serialization.d.ts.map +1 -0
- package/dist/lib/serialization.js +184 -1
- package/dist/lib/utils.d.ts +5 -4
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +77 -1
- package/package.json +11 -9
- package/sanity-check.cjs +8 -0
- package/sanity-check.mjs +8 -0
- package/.vscode/launch.json +0 -19
- package/.vscode/settings.json +0 -3
- package/index.ts +0 -5
- package/jest.config.js +0 -5
- package/lib/logger.ts +0 -128
- package/lib/mavesp.ts +0 -112
- package/lib/mavlink.ts +0 -806
- package/lib/serialization.test.ts +0 -256
- package/lib/serialization.ts +0 -176
- package/lib/utils.ts +0 -75
- package/tests/data.mavlink +0 -0
- package/tests/main.ts +0 -59
- package/tsconfig.json +0 -16
package/lib/mavesp.ts
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
import { EventEmitter } from 'events'
|
2
|
-
|
3
|
-
import { Socket, createSocket } from 'dgram'
|
4
|
-
import { Writable, PassThrough } from 'stream'
|
5
|
-
import { MavLinkPacketSplitter, MavLinkPacketParser, MavLinkPacketSignature } from './mavlink'
|
6
|
-
import { MavLinkProtocol, MavLinkProtocolV2 } from './mavlink'
|
7
|
-
import { waitFor } from './utils'
|
8
|
-
import { uint8_t, MavLinkData } from 'mavlink-mappings'
|
9
|
-
|
10
|
-
/**
|
11
|
-
* Encapsulation of communication with MavEsp8266
|
12
|
-
*/
|
13
|
-
export class MavEsp8266 extends EventEmitter {
|
14
|
-
private input: Writable
|
15
|
-
private socket: Socket
|
16
|
-
private ip: string = ''
|
17
|
-
private sendPort: number = 14555
|
18
|
-
private seq: number = 0
|
19
|
-
|
20
|
-
constructor() {
|
21
|
-
super()
|
22
|
-
|
23
|
-
this.input = new PassThrough()
|
24
|
-
|
25
|
-
this.processIncommingUDPData = this.processIncommingUDPData.bind(this)
|
26
|
-
this.processIncommingPacket = this.processIncommingPacket.bind(this)
|
27
|
-
|
28
|
-
// Create the reader as usual by piping the source stream through the splitter
|
29
|
-
// and packet parser
|
30
|
-
const reader = this.input
|
31
|
-
.pipe(new MavLinkPacketSplitter())
|
32
|
-
.pipe(new MavLinkPacketParser())
|
33
|
-
|
34
|
-
reader.on('data', this.processIncommingPacket)
|
35
|
-
}
|
36
|
-
|
37
|
-
/**
|
38
|
-
* Start communication with the controller via MAVESP2866
|
39
|
-
*
|
40
|
-
* @param receivePort port to receive messages on (default: 14550)
|
41
|
-
* @param sendPort port to send messages to (default: 14555)
|
42
|
-
*/
|
43
|
-
async start(receivePort: number = 14550, sendPort: number = 14555) {
|
44
|
-
this.sendPort = sendPort
|
45
|
-
|
46
|
-
// Create a UDP socket
|
47
|
-
this.socket = createSocket({ type: 'udp4', reuseAddr: true })
|
48
|
-
this.socket.on('message', this.processIncommingUDPData)
|
49
|
-
|
50
|
-
// Start listening on the socket
|
51
|
-
return new Promise((resolve, reject) => {
|
52
|
-
this.socket.bind(receivePort, () => {
|
53
|
-
// Wait for the first package to be returned to read the ip address
|
54
|
-
// of the controller
|
55
|
-
waitFor(() => this.ip !== '')
|
56
|
-
.then(() => { resolve(this.ip) })
|
57
|
-
.catch(e => { reject(e) })
|
58
|
-
})
|
59
|
-
})
|
60
|
-
}
|
61
|
-
|
62
|
-
/**
|
63
|
-
* Send a packet
|
64
|
-
*
|
65
|
-
* @param msg message to send
|
66
|
-
* @param sysid system id
|
67
|
-
* @param compid component id
|
68
|
-
*/
|
69
|
-
send(msg: MavLinkData, sysid: uint8_t = MavLinkProtocol.SYS_ID, compid: uint8_t = MavLinkProtocol.COMP_ID) {
|
70
|
-
const protocol = new MavLinkProtocolV2(sysid, compid)
|
71
|
-
const buffer = protocol.serialize(msg, this.seq++)
|
72
|
-
this.seq &= 255
|
73
|
-
this.sendBuffer(buffer)
|
74
|
-
}
|
75
|
-
|
76
|
-
/**
|
77
|
-
* Send a signed packet
|
78
|
-
*
|
79
|
-
* @param msg message to send
|
80
|
-
* @param sysid system id
|
81
|
-
* @param compid component id
|
82
|
-
* @param linkId link id for the signature
|
83
|
-
*/
|
84
|
-
sendSigned(msg: MavLinkData, key: Buffer, linkId: uint8_t = 1, sysid: uint8_t = MavLinkProtocol.SYS_ID, compid: uint8_t = MavLinkProtocol.COMP_ID) {
|
85
|
-
const protocol = new MavLinkProtocolV2(sysid, compid, MavLinkProtocolV2.IFLAG_SIGNED)
|
86
|
-
const b1 = protocol.serialize(msg, this.seq++)
|
87
|
-
this.seq &= 255
|
88
|
-
const b2 = protocol.sign(b1, linkId, key)
|
89
|
-
this.sendBuffer(b2)
|
90
|
-
}
|
91
|
-
|
92
|
-
/**
|
93
|
-
* Send raw data over the socket. Useful for custom implementation of data sending
|
94
|
-
*
|
95
|
-
* @param buffer buffer to send
|
96
|
-
*/
|
97
|
-
sendBuffer(buffer: Buffer) {
|
98
|
-
this.socket.send(buffer, this.sendPort, this.ip)
|
99
|
-
}
|
100
|
-
|
101
|
-
private processIncommingUDPData(buffer, metadata) {
|
102
|
-
// store the remote ip address
|
103
|
-
if (this.ip === '') this.ip = metadata.address
|
104
|
-
// pass on the data to the input stream
|
105
|
-
this.input.write(buffer)
|
106
|
-
}
|
107
|
-
|
108
|
-
private processIncommingPacket(packet) {
|
109
|
-
// let the user know we received the packet
|
110
|
-
this.emit('data', packet)
|
111
|
-
}
|
112
|
-
}
|