/openvario-compman

Gliding competition manager app for Openvario

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Gliding Competiton Manager for OpenVario

Build Status Coverage Status Checked with mypy Code style: black Maintainability

This application is intended for glider pilots participating in gliding competitions, published on Soaring Spot. It runs on OpenVario flight computer and automatically downloads current contest airspace and waypoint files when they are published on Soaring Spot. compman allows to select your competition class and automatically downloads today's task, provided by soarscore.com. It will configure XCSoar to use the task and updated files. You can switch between contests easily without need to download and transfer files to the flight computer manually.

It is a text-mode application, which might look primitive for modern graphics-rich UI standards. However, it is written using contemporary software engineering techniques, responsive, very fast and easy to use, even with very limited input controls available for OpenVario. It also has a fairly simple code, that makes openvario easy to understand and change.

Main Screen Soaringspot competitions Competition selector Competition details

Usage

This app requires Internet connection to be useful. The simplest way to get it on your OpenVerio is to use a small USB WiFi dongle.

Typically, during the gliding competition, you run compman daily to check if new competition files were uploaded to Soaring Spot (or when new files are announced during the briefing). When compman is started, new files for the current competition will be automatically downloaded to the device. As soon as you select them, XCSoar will be reconfigured to use these files. Simply exit compman and run the XCSoar the usual way.

When you go to the next competition, simply switch the contest using compman menu system. All competition files will be automatically downloaded and XCSoar will be reconfigured. No more complicated downloading of files on the flash drives and transferring them manually to the OpenVario!

compman can be operated using only 6 buttons: 4 arrow keys for navigating, Enter (usually a push on rotary encoder or joystick) for selecting items and Esc (usually marked as X) for going back.

Installation

To install compman on your OpenVario you will also need to be able to ssh to the device or connect to it through standard debugging serial port. Assuming the network connection is up, use opkg package manager to download and install compman:

$ echo src compman http://openvario.lebedev.lt/opkg/armv7vet2hf-neon >> /etc/opkg/customfeeds.conf
$ opkg update
$ opkg install openvario-compman
$ opkg install ovmenu-compman

If you have already installed openvario-shell, all you have to do is:

$ opkg install openvario-compman

At this point you should be able to run compman from command line:

$ compman

Reboot your OpenVario and you should also see the new menu item for compman!

Developing

It is not required to own or have access to OpenVario device in order to develop compman. The only requirements are Python 3.7 or higher and terminal emulator, readily available on MacOS or Linux operating systems. There are lots of free options for Windows as well.

Setting up the development environment

compman uses pipenv for managing dependencies and dev environment. If you don't have it yet, install with:

$ pip install pipenv

After checking out the sources, cd to openvario-compman directory and run:

$ pipenv shell
$ pipenv install

After that, your development environment is ready, you should be able to run the app:

$ compman

It is possible to adjust few options by providing them in .env file, located in project directory. You can copy the sample file sample.env to .env and adjust values there.

Development tools

compman uses various tools to check the code quality. They are generally available through make program. Most useful are these:

  • make test - runs the test suite
  • make mypy - checks the sources with static type checker
  • make black - reformats the source code to match the code style

It is often useful to watch the log file while running compman in development environment. The log file will contain traces of actions user makes and tracebacks from exceptions happening during the execution. Use tail to watch the logs in a separate terminal window:

$ tail -F ~/.compman/compman.log

Filesystem

compman keeps all its files under ~/.compman directory. It contains the set of directories for each configured competition. Each competition directory contains downloaded airspace and waypoints files. This directory can be changed by stting COMPMAN_DATADIR environment variable or using --datadir command-line option.

compman expects to find XCSoar profile in ~/.xcsoar directory.