Software

Programming Languages

Our projects are developed using the following programming languages.

Arduino/C++

Embedded systems are programed in C++ using Arduino core libraries.

FreeRTOS

FreeRTOS runs along side the C++ code in our embedded systems on the ESP32 SOC. Currently we only use it for its primitive xTaskCreatePinnedToCore() which is used to manage mutli-threaded process execution. Aside from chip manufaturers, other large players are starting to embrace FreeRTOS including Amazon Web Services (AWS) to address IOT for microcontrollers including the ESP32 SOC. They have created AWS FreeRTOS. With the advent of AWS embracing FreeRTOS it may well be that other FreeRTOS primitives will be implemented for features such as voice command via Alexa voice services in the future.

Electron Framework

Desktop applications are developed using the Electron Framework which uses Javascript, CSS and HTML.

Static web content

Documentation stored on the Github hosting service is written in Gem, Jekyll, Markdown, HTML, CSS, Javascript.

Tools

The following software is recommended for developing a VA3WAM project.

Text Editor

Our projects are written using Visual Studio Code (VSC) as your enhanced text editor. Within VSC install these plug-ins:

IDE

Our embedded systems are programmed using PlatformIO. HTML content is written using the Sea Monkey Internet Application Suite.

Remote Messaging Protocol

Messaging for our embedded appications is done using the MQTT protocol, the Mosquito MQTT Broker and the MQTTfx MQTT client.

Standards

When contributing to our repositories please follow these standards.

C++

This link points to a set of standards used for coding in C++. In addition to these standards comments should be markdown compliant using /// followed by XML tags. Source code tags are parsed using DoxyGen to produce documentation.

Versioning

We use SemVer for versioning. We use the Github release process to package up known working code configuraitons. SVC for VA3WAM repositories is handled using Git.

Naming Variables and Files

We use camelCase for naming variables in our code as well as when naming files.

Readme Files

Our Github respositories must contain a readme file that is based on this template.