Skip to content

Developer Guide

Eero Lehtinen edited this page Jan 13, 2023 · 15 revisions

Overview

Make sure to sure to go through the normal set up instructions to ensure all requirements are installed, setup scripts are ran, and OAuth2 credentials are set up.

Tools

This project uses PlaformIO. You can run it from the commmandline, e.g:

  • pio run -t monitor builds, uploads and starts a serial monitor.
  • pio run -t uploadfs builds the data folder into a filesystem and uploads it to the device.

Note: Previous monitoring processes need to be closed before uploading anything!

Another way is to install the PlatformIO VSCode extension and use its GUI to "Upload and Monitor" and "Upload Filesystem Image".

This project uses clang-format. The root folder of the repository contains the used .clang-format file. Remember to always format before pushing.

Tips

You don't need to always go though the access point website to edit settings. You can also create a config.json based on the example in ./misc/m5booking.openapi.yaml (can be inspected in swagger.io) and insert it into the ./data/ folder. This way this config is automatically set up when after uploading the filesystem.

Note: the "gcalsettings"."token" is shown as a string in the openapi definition, but you should set it to the whole non-stringified object from token.json.

Release Process

Normal CI runs on every push, but the release CI runs only when a tag is pushed. The version in platformio.ini needs be updated too.

# Change version defines in buildflags in platformio.ini to x version and commit
git commit -m "Bump version to 5.5.5"
git push
# Add and push the corresponding version tag
git tag v5.5.5
git push origin v5.5.5

Now in the GitHub Actions page of the project there should be a yellow mark in the latest job, because it's waiting for a review to continue a beta deployment. Approve the review to release the beta build.

If the beta testing goes well, the build can be published to stable. After the beta release, the job should start waiting for a review to be released to stable. Approve the review it to release the stable build. If the build isn't good enough for a stable release, the job can be left alone and never confirmed.

Clone this wiki locally