add architecture document
parent
9eaaf21b4f
commit
67da85d812
|
@ -0,0 +1,69 @@
|
|||
Architecture
|
||||
------------
|
||||
|
||||
The galmon project consists of several components. Core of what we do are
|
||||
protobuf messages that are (mostly) device independent and contain satellite
|
||||
data and metadata.
|
||||
|
||||
All protobuf messages are 'NavMonMessages', of which there are 15 types.
|
||||
These messages are:
|
||||
|
||||
* Navigation messages from satellites, various types
|
||||
* Device / software metadata
|
||||
* Reception strength details
|
||||
* Doppler, carrier phase data
|
||||
* RTCM messages
|
||||
|
||||
For every supported receiver type, there is a tool to convert the device
|
||||
specific protocol to these protobuf messages. Currently we only have
|
||||
'ubxtool' that does this for many u-blox devices. In addition, 'rtcmtool'
|
||||
converts a RTCM to protobuf.
|
||||
|
||||
Components
|
||||
----------
|
||||
|
||||
Core components:
|
||||
* ubxtool/rtcmtool: generate protobuf messages, transmit them over network
|
||||
* navrecv: receive protobuf messages over the network and store them on
|
||||
disk
|
||||
* navnexus: serve protobuf messages from disk over the network
|
||||
* navparse: consume protobuf and turn into a webserver with data, plus
|
||||
optionally fill an influxdb time-series database for graphing and analysis
|
||||
purposes.
|
||||
|
||||
This offers a complete suite for:
|
||||
|
||||
* generating protobuf messages and transmitting them
|
||||
* reception & long-term storage
|
||||
* serving protobuf messages
|
||||
* analysing them for display & storing statistics for analysis
|
||||
|
||||
|
||||
Non-core tools:
|
||||
* navdump: convert protobuf format data into a textual display of messages
|
||||
* navcat: serve protobuf messages from disk directly to stdout
|
||||
* reporter: make "the galmon.eu weekly galileo report", based on the
|
||||
time-series database filled by navparse
|
||||
* rinreport: rinex analysis tooling (not generically useful yet)
|
||||
* galmonmon: monitor a navparse instance for changes, tweet them out
|
||||
* navdisplay: some eye-candy that converts protobuf into a live display
|
||||
(not very good)
|
||||
|
||||
Transmission details
|
||||
--------------------
|
||||
Messages are sent as protobuf messages with an intervening magic value and a
|
||||
length field.
|
||||
|
||||
Both rtcmtool and ubxtool can send data over TCP/IP, but also to standard
|
||||
output. This standard output mode makes it possible to pipe the output of
|
||||
these tools straight into navdump or navparse.
|
||||
|
||||
Storage details
|
||||
---------------
|
||||
Storage is very simplistic but robust. For every receiver, for every hour,
|
||||
there is a file with protobuf messages. That's it. The goal is for the
|
||||
receiver to never ever go down.
|
||||
|
||||
navnexus and navcat can consume data from this simplistic storage and serve
|
||||
it over TCP/IP or to standard output.
|
||||
|
Loading…
Reference in New Issue