Skip to content
cccskills
FreePublished on GitHub

firmware-core

Core firmware context for the Megahub ESP32 project. Use when working on PlatformIO configuration, build scripts, library structure, main.cpp, or general ESP32 firmware development. Covers build system, project structure, common pitfalls, and debugging.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md3.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Firmware Core — Megahub ESP32

Build System

PlatformIO configuration — see platformio.ini:

  • Environment: esp-wrover-kit
  • Framework: Arduino + ESP-IDF hybrid
  • Partition table: custom_4mb_noota.csv (no OTA, maximizes app partition)
  • Pre-build scripts (in order):
    1. gitversion.py — injects git hash into firmware
    2. buildfrontend.py — runs npm run build for the selected frontend mode
    3. embedfiles.py — gzips and embeds frontend files into firmware as C arrays

Serial monitor: 115200 baud. Log level controlled by CORE_DEBUG_LEVEL (currently 2).

Logging macros — always use these, never Serial.print():

INFO("Free heap: %d bytes", ESP.getFreeHeap());
WARN("Something unexpected: %d", value);
ERROR("Critical failure in %s", __func__);

Library Structure

lib/
  btremote/       BLE server (Web Bluetooth API) + Classic BT HID host (gamepads)
  commands/       Command processing system — all device operations use this pattern
  configuration/  WiFi & system configuration persistence
  hubwebserver/   HTTP server using PsychicHttp library
  imu/            MPU6050 IMU — I²C, requires proper init sequence
  lpfuart/        LEGO Powered Up UART protocol implementation
  lua/            Lua 5.4 interpreter (embedded, constrained memory)
  megahub/        Main application — wires all libraries together
  portstatus/     Port status tracking and JSON serialization
  inputdevices/   Gamepad/HID input device abstraction
  statusmonitor/  System health monitoring (heap, tasks)

Key Architecture: Command Pattern

All device operations go through lib/commands/. This provides:

  • Serialization of requests from multiple sources (BLE, Web)
  • Consistent error handling and response formatting
  • Command queuing for rate-limited devices

Common Pitfalls

PitfallFix
BLE race conditionUse proper task synchronization (mutex/queue)
Stack overflowUse uxTaskGetStackHighWaterMark(), move large vars to heap
String heap fragmentationUse std::string::reserve() or fixed buffers
Blocking in BLE callbackPost to a queue, handle in application task
Lua crashWrap ALL Lua execution in lua_pcall()
LEGO device timeoutSend keepalive commands, handle wake-up sequence
IMU init failureAlways include required delays in MPU6050 init sequence
Memory leakEvery new/malloc must have matching delete/free

Debugging

pio device monitor --baud 115200   # Serial monitor
pio test                           # Run unit tests
pio run                            # Build only (no upload)

Crash analysis: Enable ESP32 exception decoder in PlatformIO. Stack traces decode to source lines.

Runtime monitoring:

INFO("Free heap: %d bytes, Free PSRAM: %d bytes",
     ESP.getFreeHeap(), ESP.getFreePsram());
INFO("Task stack HWM: %d words", uxTaskGetStackHighWaterMark(NULL));

Known heap budget (from real device logs):

  • After IMU init: ~170KB free heap
  • After Lua state creation: ~140KB free heap
  • After BT stack start: ~75KB free heap
  • PSRAM: ~4.1MB available (confirmed present on this board)

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

ble

Free

Bluetooth context for the Megahub project. Use when working on BLE GATT server, Classic Bluetooth HID host, Web Bluetooth API integration, btremote library, connection handling, or any Bluetooth-related firmware code.

The English summary is being prepared. Showing the original description.

mirkosertic/Megahub7Updated Oct 21, 2026

Blockly visual programming context for the Megahub project. Use when adding, modifying, or debugging custom Blockly blocks, the Lua code generator, the toolbox, block colors, or the BLOCKS.md documentation generation script.

The English summary is being prepared. Showing the original description.

mirkosertic/Megahub7Updated Oct 21, 2026

Documentation structure and maintenance rules for the Megahub project. Use whenever making user-facing changes — adding features, changing behavior, fixing hardware compatibility, or modifying configuration. Describes which files to update, the README structure, and writing style.

The English summary is being prepared. Showing the original description.

mirkosertic/Megahub7Updated Oct 21, 2026

Frontend development context for the Megahub project. Use when working on the web-based IDE, Vite build system, Blockly visual programming, Web Bluetooth API integration, JavaScript frontend code, CSS/styles, UI components, or anything in the /frontend/ directory.

The English summary is being prepared. Showing the original description.

mirkosertic/Megahub7Updated Oct 21, 2026

LEGO Powered Up protocol context for the Megahub project. Use when working on LEGO device communication, lpfuart library, UART parsing, motor control, sensor modes, device initialization, or debugging UART noise/corruption issues.

The English summary is being prepared. Showing the original description.

mirkosertic/Megahub7Updated Oct 21, 2026

Code formatting and linting context for the Megahub project. Use when writing or reviewing code in C++ or JavaScript, or when running format/lint checks. Describes tool commands, style conventions, and when to apply them.

The English summary is being prepared. Showing the original description.

mirkosertic/Megahub7Updated Oct 21, 2026

See all skills by mirkosertic

Report a problem with this skill