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:
- Doygen
- Doygen Document Generator
- C/C++
- Markdown Shortcuts
- Markdown Theme Kit
- Markdown TOC
- Markdown Lint
- PlatformIO IDE - embedded programming IDE
- Todo Tree
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.