Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
7e97f6d
chore(gitignore): git ignore was removing ui header files
anarchyysm Mar 6, 2026
1954f4f
fix: add missing ui headers
lthiagovs Mar 6, 2026
a24d8a3
chore(c1101): using the new SPI Driver
anarchyysm Mar 6, 2026
08d8c91
refactor(tusb_desc): refactor TinyUSB descriptor because of new version
anarchyysm Mar 6, 2026
916ba6e
refactor(vfs_sdcard): removed spi implementation to SDMMC, more speed…
anarchyysm Mar 6, 2026
09b00de
chore(pins): pins for CLK, CMD and DATA 0-3
anarchyysm Mar 6, 2026
b7f0bf5
chore(build): rename binary firmware name
anarchyysm Mar 16, 2026
5ebe812
delete(subghz): deleted subghz functions from C5 firmware
anarchyysm Mar 16, 2026
8115f5c
delete(bad_usb): remove bad_usb from C5 firmware
anarchyysm Mar 16, 2026
effaf28
chore(build): remove badusb and subghz app sources
anarchyysm Mar 16, 2026
bbe4ecc
chore(kernel): remove cc1101 init from C5 kernel (doesn´t need)
anarchyysm Mar 16, 2026
f9b690f
delete(tusb_desc): delete usb descriptor driver from C5
anarchyysm Mar 16, 2026
8479bab
delete(pn7150): deleted old NFC driver, a new one fot ST25 should com…
anarchyysm Mar 16, 2026
9313f9c
delete(cc1101): delete cc1101 driver from C5 firmware
anarchyysm Mar 16, 2026
3d45178
chore(build): remove unnused app sources from cmake
anarchyysm Mar 16, 2026
916e6d3
remove(assets): unnused assets from C5 who is occuping space
anarchyysm Mar 16, 2026
651e95a
remove(assets): unnused assets from C5 who is occuping space
anarchyysm Mar 16, 2026
7166fb9
delete(ir): delete IR service from C5 firmware
anarchyysm Mar 16, 2026
68d95a1
delete(usb_stream): delete usb_stream service from C5 firmware
anarchyysm Mar 16, 2026
72e3a77
delete(virtual_display_client): delete virtual_display_client servic…
anarchyysm Mar 16, 2026
f32dcc6
chore(build): removed unnused app sources
anarchyysm Mar 16, 2026
63492ba
chore(sdkconfig): new sdkconfig
anarchyysm Mar 16, 2026
869b55a
chore(bluetooth_p4): use new spi_bridge wrappers and dispatchers
anarchyysm Mar 16, 2026
60b444e
remove(espnow_chat): remove esp-now chat from p4 (already has on C5)
anarchyysm Mar 16, 2026
61243ed
chore(subghz_ui): use the new waterfall spectrum and new cc1101 init
anarchyysm Mar 16, 2026
ee299d4
chore(wifi): port_scan now use the new spi_bridge driver, wrappers an…
anarchyysm Mar 16, 2026
06a870e
chore(build): removed unnused app sources
anarchyysm Mar 16, 2026
2c2e10d
chore(c5_flasher): includes C5 firmware binary inside p4
anarchyysm Mar 16, 2026
00896b7
chore(console): console now use the new spi_bridge driver for wifi, w…
anarchyysm Mar 16, 2026
21f7e41
refactor(sd_card): sd_card now uses sdmmc protocol to read and write …
anarchyysm Mar 16, 2026
613b198
feat(spi_protocol): more protocols to improve more the spi_bridge
anarchyysm Mar 16, 2026
eb9eb3c
chore(build): include C5 firmware binary by cmake build
anarchyysm Mar 16, 2026
9b2c585
chore(build): remove C5 firmware binary by cmake build from main and …
anarchyysm Mar 16, 2026
b59b5b2
chore(build): change firmware's name
anarchyysm Mar 16, 2026
46df0d8
chore(partition): increase the app size 2M to 3M
anarchyysm Mar 16, 2026
0043211
chore(sdkconfig): enabled trace facility and formatting functions
anarchyysm Mar 16, 2026
b2b712e
feat(tools): automate building for esp32-p4 and esp32-c5
anarchyysm Mar 16, 2026
d44a82a
feat(tools): automate flash for esp32-p4 and esp32-c5
anarchyysm Mar 16, 2026
8d4e131
feat(tools): automate build & flash for esp32-p4 and esp32-c5
anarchyysm Mar 16, 2026
2bbbcc1
fix(tools): fixed python binary inside lvgl-env
anarchyysm Mar 16, 2026
0c82bcb
deleted(temp): temp files should not come to github XD
anarchyysm Mar 16, 2026
47fcdc8
removed(buzzer): removed buzzer sounds, we use speakers now
anarchyysm Mar 17, 2026
6a5cea4
chore(update): update files is completed now
anarchyysm Mar 17, 2026
0a3cf3f
removed(tinyusb): removed tinyusb dependencies from C5
anarchyysm Mar 17, 2026
8b92f59
fix(spi): use SPI2_HOST and removed SPI3_HOST
anarchyysm Mar 17, 2026
22297c7
chore(skdconfig): set the target for esp32-c5
anarchyysm Mar 17, 2026
0fad330
feat(github): files to github workflow build realeases and version au…
anarchyysm Mar 17, 2026
4ad3499
chore(build): build.sh search recursively for esp-idf path
anarchyysm Mar 17, 2026
3625dc2
feat(setup): setup.sh file to verify for git conventions
anarchyysm Mar 17, 2026
8c8b812
chore(CONTRIBUTING): updated contributing md
anarchyysm Mar 17, 2026
5e6e384
feat(OTA): Over-The-Air updating firmware
anarchyysm Mar 17, 2026
03ee400
chore(sdkconfig): enabled rollback for ota updates
anarchyysm Mar 17, 2026
c7fdee9
chore(main): verify ota post boot before kernel_init
anarchyysm Mar 17, 2026
1ce9c58
feat(spi): spi bridge now verify firmware versions to know when updat…
anarchyysm Mar 17, 2026
36c51a6
chore(build): added dependencies to make ota available
anarchyysm Mar 17, 2026
6556d8d
chore(gitignore): ignore temp dir
anarchyysm Mar 17, 2026
a01304e
docs(ota): documentation for ota update
anarchyysm Mar 17, 2026
92a1625
chore(gitignore): ignore temp dir
anarchyysm Mar 17, 2026
2d9337a
chore(github): add more words to github convention
anarchyysm Mar 17, 2026
e896b1d
chore(github): add more words to github convention
anarchyysm Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CI

on:
pull_request:
branches: [main, dev]

jobs:
commitlint:
name: Validate Commits
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-node@v4
with:
node-version: 22

- run: npm install --save-dev @commitlint/cli @commitlint/config-conventional

- run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }}

build:
name: Build Firmware
runs-on: ubuntu-latest
container:
image: espressif/idf:v5.5.1

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Build
run: bash tools/build.sh
shell: bash
86 changes: 86 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Release

on:
push:
branches: [main]

permissions:
contents: write
issues: write
pull-requests: write

jobs:
version:
name: Semantic Release
runs-on: ubuntu-latest
outputs:
new_release: ${{ steps.semrel.outputs.new_release }}
version: ${{ steps.semrel.outputs.version }}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-node@v4
with:
node-version: 22

- name: Install dependencies
run: |
npm install \
semantic-release \
conventional-changelog-conventionalcommits \
@semantic-release/commit-analyzer \
@semantic-release/release-notes-generator \
@semantic-release/changelog \
@semantic-release/exec \
@semantic-release/git \
@semantic-release/github

- name: Run semantic-release
id: semrel
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
OUTPUT=$(npx semantic-release 2>&1) || true
echo "$OUTPUT"
VERSION=$(echo "$OUTPUT" | grep -oP 'Published release \K[0-9]+\.[0-9]+\.[0-9]+' || echo "")
if [ -n "$VERSION" ]; then
echo "new_release=true" >> $GITHUB_OUTPUT
echo "version=$VERSION" >> $GITHUB_OUTPUT
else
echo "new_release=false" >> $GITHUB_OUTPUT
fi

build:
name: Build & Upload
needs: version
if: needs.version.outputs.new_release == 'true'
runs-on: ubuntu-latest
container:
image: espressif/idf:v5.5.1

steps:
- uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0
submodules: recursive

- name: Pull latest (includes version commit)
run: git pull origin main

- name: Build
run: bash tools/build.sh
shell: bash

- name: Upload binary to Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ needs.version.outputs.version }}
run: |
cp firmware_p4/build/TentacleOS_P4.bin "TentacleOS_v${VERSION}.bin"
gh release upload "v${VERSION}" \
"TentacleOS_v${VERSION}.bin" \
--clobber
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
/lvgl-env/
**/lvgl-env/
/temp/
temp/
temp
**/temp/**
**/temp/
LVGLImage.py

Expand Down Expand Up @@ -533,7 +536,6 @@ object_script.*.Debug
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
*.qmlc
*.jsc
Makefile*
Expand Down
30 changes: 30 additions & 0 deletions .releaserc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"branches": ["main"],
"plugins": [
["@semantic-release/commit-analyzer", {
"preset": "conventionalcommits",
"releaseRules": [
{ "type": "feat", "release": "minor" },
{ "type": "fix", "release": "patch" },
{ "type": "perf", "release": "patch" },
{ "breaking": true, "release": "major" }
]
}],
"@semantic-release/release-notes-generator",
["@semantic-release/changelog", {
"changelogFile": "CHANGELOG.md"
}],
["@semantic-release/exec", {
"prepareCmd": "sed -i 's/\"version\": *\"[^\"]*\"/\"version\": \"${nextRelease.version}\"/' firmware_p4/assets/config/OTA/firmware.json firmware_c5/assets/config/OTA/firmware.json"
}],
["@semantic-release/git", {
"assets": [
"CHANGELOG.md",
"firmware_p4/assets/config/OTA/firmware.json",
"firmware_c5/assets/config/OTA/firmware.json"
],
"message": "chore(release): v${nextRelease.version}"
}],
"@semantic-release/github"
]
}
47 changes: 44 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,54 @@ We follow the [ESP-IDF Style Guide](https://docs.espressif.com/projects/esp-idf/
---

### Commit Conventions
We use [Conventional Commits](https://www.conventionalcommits.org/). This helps in generating changelogs and understanding the history.
We use [Conventional Commits](https://www.conventionalcommits.org/). This is **enforced by a git hook** — commits that don't follow the format will be rejected.

Format: `<type>(<scope>): <description>`

Common types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`.
| Type | Description | Version Impact |
|---|---|---|
| `feat` | New feature | Minor bump (0.**X**.0) |
| `fix` | Bug fix | Patch bump (0.0.**X**) |
| `perf` | Performance improvement | Patch bump (0.0.**X**) |
| `docs` | Documentation only | No bump |
| `style` | Code style (formatting, etc.) | No bump |
| `refactor` | Code refactoring | No bump |
| `test` | Adding or updating tests | No bump |
| `chore` | Maintenance tasks | No bump |
| `ci` | CI/CD changes | No bump |
| `build` | Build system changes | No bump |
| `revert` | Reverting a previous commit | No bump |

**Breaking changes** (major version bump) are indicated by adding `!` before the colon:
```
feat(spi)!: redesigned bridge protocol
fix!: changed public API return types
```

Examples:
```
feat(subghz): add waterfall visualization
fix(spi): corrected timeout on bridge init
feat(bt)!: redesigned BLE protocol
chore: cleanup unused imports
refactor(ota): simplified update flow
```

### Automatic Versioning
This project uses **Semantic Versioning** with fully automated version bumps via [semantic-release](https://github.com/semantic-release/semantic-release).

- Versioning is handled entirely by **GitHub Actions** — contributors do not need to manage versions manually.
- When a PR is merged into `main`, the CI pipeline analyzes commit messages, determines the version bump, creates a git tag, generates a changelog, and publishes a GitHub Release with the firmware binaries.
- Just write your commits following the Conventional Commits format and the rest is automatic.

### Git Hooks Setup
After cloning the repository, run the setup script to install the required git hooks:

```bash
./tools/setup.sh
```

Example: `feat(subghz): add waterfall visualization`
This installs the `commit-msg` hook that validates your commit messages follow the Conventional Commits format. **Without this, your commits may be rejected during code review.**

---

Expand Down
12 changes: 12 additions & 0 deletions commitlint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', [
'feat', 'fix', 'docs', 'style', 'refactor',
'perf', 'test', 'chore', 'ci', 'build', 'revert',
'delete', 'deleted', 'remove', 'removed'
]],
'scope-case': [0],
'subject-case': [0],
},
};
2 changes: 1 addition & 1 deletion firmware_c5/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)

project(highboy)
project(TentacleOS_C5)

if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
# Windows Detection
Expand Down
Binary file removed firmware_c5/assets/UI/MENU_SELECT.png
Binary file not shown.
44 changes: 4 additions & 40 deletions firmware_c5/assets/config/OTA/firmware.json
Original file line number Diff line number Diff line change
@@ -1,42 +1,6 @@
{
"system_hardware": "HighBoy_v1",
"ota_repository_url": "https://repository.highboy.com.br/firmware/system/update.json",
"changelog": "vazio ate agora",
"components": {
"master_mcu": {
"chip": "ESP32-S3",
"version": "1.0.0",
"status": "active"
},
"slave_mcu": {
"chip": "ESP32-C5",
"version": "1.0.0",
"status": "active"
}
}
}

update.json (its be available in web server, saving it here temporary).
{
"release_tag": "release_2024_01_update", github actions
"critical": true,
"changelog": "Update crítico do driver de rádio no C5 e melhorias de UI no S3.",
"packages": [
{
"component": "master_mcu",
"version": "1.0.1",
"url": "https://repository.highboy.com.br/firmware/esp32-s3/fw_s3_1.0.1.bin",
"size": 1452032,
"md5": "5eb63bbbe01eeed093cb22bb8f5acdc3",
"action": "self_update"
},
{
"component": "slave_mcu",
"version": "1.0.2",
"url": "https://repository.highboy.com.br/firmware/esp32-c5/fw_c5_1.0.2.bin",
"size": 524288,
"md5": "a1b2c3d4e5f6as12da123f12r6",
"action": "flash_via_peripheral"
}
]
"system_hardware": "HighBoy",
"version": "0.1.0",
"ota_repository_url": "https://repo.highboy.com.br/firmware/system/update.json",
"changelog": ""
}
4 changes: 0 additions & 4 deletions firmware_c5/assets/config/buzzer/buzzer.conf

This file was deleted.

91 changes: 0 additions & 91 deletions firmware_c5/assets/config/buzzer/default_notes.conf

This file was deleted.

Loading
Loading