DoseFirmware a22564d
DOSE Device Firmware
DoseFirmware

Dose device C++ Firmware.

Development Setup

This project uses PlatformIO, but the Visual Studio Code extension is generally not recommended.

Before opening the project in your editor, try compiling the project to download dependencies and make the compile-commands.json file to help out Clang.

You absolutely should have the clangd, clang-format, and (recommended), clang-tidy. Make sure to enable editor.formatOnSave and set editor.formatOnSaveMode to file.

It's important to remember that this project is NOT a binary for your computer, and the header files are completely seperate to what you realistically have on your system. (e.g, /usr/include). Do NOT attempt to use them.

In fact, with a few minor exceptions (all managed by custom scripts for platformio)–You should never have to explicitly add -I inclusions, either to platformio.ini or .clangd. If you have to, you're most likely doing it wrong.

Finally, use a Un*x based system; Linux works perfectly, (tested extensively on Arch Linux), and macOS has mixed compatibility. Code compiles, but many tools do not already exist, and the builtin clang DOES NOT WORK (apple-clang). Also, on macOS, clangd gives many nonsensical warnings. Windows is it's own beast entirely, and while I might add it later, I, to be honest, don't care enough to add it. I don't use Windows, and it would be unneeded and codebase bloat to add it.

Supported Devices

Board Status Notes
ESP32 SUPPORTED Production target device
ESP8266 LIMITED Deprecated; No bluetooth functionality whatsoever. Works due to historical code from starting development on ESP8266.

‍[!WARNING] The ESP8266 board is deprecated and no longer will be maintained. Future features may not work, or be outright disabled entirely. All development is geared towards the Expressif ESP32.
While I made a good-faith attempt to ensure the code itself compiles for both platforms, know that if you're using this platform you might have a really bad time. The only supported communication method on this platform is HTTP, so it WILL NOT work with the Dose Application.