Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Motivation

The ground infrastructure currently requires that all telemetry data come in as a UDP packet over the network, so all data sources from the vehicle need a way to be sent over a standard network. For SRAD boards on the rocket (e.g. SPICA, NIGEL), we get data over 900MHz RF through the XBees and have a special piece of hardware that converts XBee packets to Ethernet/UDP packets and sends them over the network to the ground station. Some COTS tracking solutions, like the BigRedBee, don't use 900MHz and currently we don't have a way to get that data to the ground station. The BigRedBee uses AFSK modulation to send AX.25 frames containing APRS packets. We have a tool that runs on a standard PC that will demodulate the AFSK output from our radios and unpack AX.25 frames, displaying only APRS information. We need a program that can read in APRS packets and convert them to UDP packets to send to the ground station.

Specifications

Write a program that:

  • reads APRS packets in ASCII format over standard input
  • sends parsed APRS data over UDP, data of interest includes
    • latitude
    • longitude
    • altitude
    • GPS time
    • any other provided information (GPS fix, satellite number, etc.), the more the better
  • must send to a variable IPv4 address and UDP port
    • destination address and port will be provided over command line
  • must run on Ubuntu 18.04 ground computers, some things to note:
    • Using Python or C/C++ is preferable, Java runtime is currently NOT installed and I'd prefer to not have to install it on all the ground machines. Let me know if there's a language you would prefer to use and I'll see if it's something we can reasonably install.
  • executed in the following format:
    • ./aprs_fwd ip:port callsign
    • 'ip' is the IPv4 address of the ground station (this will likely be a multicast address, which doesn't make a different to the sender but that's why it needs to be configurable)
    • 'port' is the destination port for the UDP packets (e.g. the port the ground station will listen to)
    • 'callsign' is the callsign the APRS packets should be coming from, any APRS packets not from this callsign should be ignored
  • accounts for non-APRS data being sent to it
    • the program that will pass this application input will have some startup messages that need to be ignored, look for a newline followed by the callsign to signify the start of an APRS packet

Helpful Materials

Here is a sample output that will be passed to this program (note that it doesn't include some information like altitude, a better output will be generated soon). It does include the startup messages that should be ignored.

Here is the APRS reference protocol, it may also be easier to use Wikipedia.

  • No labels