npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-mavlink-ftp

v0.0.1

Published

MavLink ftp services

Downloads

5

Readme

MavFTP services node-mavlink

Mavlink is a great protocol. It's versatile and allows for quite complex workflows. One example is the MavFTP protocol.

Why would you use it? Of course reading log files from the SD card is one possibility. But there is more. For example, you can download a virtual file that contains the list of currently running threads, or another that has a list of active serial ports!

One very special file goes by the name of @PARAM/param.pck?withDefaults=1. This one is virtual and contains a tightly packed list of all currently active parameters. Downloading it and decoding is like a 1000x faster than requesting each parameter separately.

Installation

To install the package issue the following command:

$ npm install --save node-mavlink-ftp

Usage

There are 2 parts: the user interface and the server-part.

The server part

Let's get over this one really quick. It's a filter that you pipe your stream of packets. It's transparent. It will react to MavFTP packages, but will not filter them out and you'll still be able to process them if you so desire.

import { SerialPort } from 'serialport'
import {
  MavLinkPacket,
  MavLinkPacketParser,
  MavLinkPacketSplitter
} from 'node-mavlink'

import { MavFTP } from 'node-mavlink-ftp'

const ftp = new MavFTP()

new SerialPort({ path: '/dev/ttyACM0', baudRate: 115200 })
  .pipe(new MavLinkPacketSplitter())
  .pipe(new MavLinkPacketParser())
  .pipe(ftp)
  .resume()

That's it! Let's now see what we can do with it.

The client side of things

Using the ftp instance is quite simple. It comes with easy to understand functions such as downloadFile(filename) or listDirectory()

async resetSessions()

This async function just resets everything. It's good to call it at the start. Don't forget to await!

async listDirectory(path: string): MavFTPDirectoryListingEntry[]

This async function returns a list of entries containing information about files and folders under the specified path.

async removeFile(filename)

This async function removes a file. That's it - nothing more. It'll throw an error if the file wasn't there to begin with.

async downloadFile(filename, options?: DownloadFileOptions): Buffer

This async function downloads the content of the specified file into the buffer it returns.

DownloadFileOptions

The following options are possible when downloading a file:

  • onProgress?: ProgressCallback - this is a callback function that will be called multiple times when the file is being downloaded

Closing thoughts

That's the first approach into making working with MavFTP approachable. It's still lacking a few parts to be complete. The burst download would be nice... I think that in the future this package will grow substantially, so stay tuned!

Happy coding!