mavlinkjs

Implementation of the MAVLink protocol

Usage no npm install needed!

<script type="module">
  import mavlinkjs from 'https://cdn.skypack.dev/mavlinkjs';
</script>

README

What's This

This repository is an npm module and a JavaScript MAVLink implementation to parse MAVLink messages, generated using Parrot MAVLink repository, with the multiple dialects, including all and common for now, using Mavlink v1.0 protocol.

Import

const { mavlink10: mavlink, MAVLink10Processor: MAVLink } = require('mavlinkjs/mavlink_all_v1');

or

import { mavlink10 as mavlink, MAVLink10Processor as MAVLink } from 'mavlinkjs/mavlink_all_v1';

Usage

Suppose you're using serial port to read data from your flight control, you could use Mavlink parser as following:

const SerialPort = require('serialport');
const { mavlink10: mavlink, MAVLink10Processor: MAVLink } = require('mavlinkjs/mavlink_all_v1');

const mavlinkParser = new MAVLink(null, 0, 0);
mavlinkParser.on('message', function(msg) {
    // the parsed message is here
    console.log(msg);
});

mavlinkParser.on('HEARTBEAT', function(msg) {
    // you could listen on specific message type
    console.log(msg.name)
    // outputs 'HEARTBEAT'
});

const serialport = new SerialPort('/dev/tty.usbserial-1430', {
    57600,
    autoOpen: true
})
serialport.on('error', function(err) {
    logger.warn(`Error in serial port: ${err.message}`)
})
// When the connection issues a "got data" event, try and parse it
serialport.on('data', function(data) {
    // pass to mavlinkParser to parse the raw data
    mavlinkParser.parseBuffer(data)
});