- C 87.5%
- Python 5.7%
- Ruby 2.1%
- C++ 1.8%
- CMake 1.8%
- Other 1.1%
## Summary This branch updates the 2024A firmware to [**SystemK v2.00**](Software/SystemK#15) and migrates to [**ESP-IDF v6.0.0**](https://docs.espressif.com/projects/esp-idf/en/v6.0/esp32s3/migration-guides/release-6.x/6.0/index.html). ### SystemK v2.00 Interface Updates Updated all components to use the new SystemK v2.00 API across four phases: - **Phase 1** — BLE and NVM/Settings components; removed now-unnecessary boilerplate from `main.c` - **Phase 2** — Further BLE and Settings interface alignment - **Phase 3** — NeoPixel (`HW_NeoPixels`) driver simplified using new SystemK LED interface - **Phase 4** — Audio (`I2S_Audio`), IR, and NVM/Settings components migrated to new interfaces ### ESP-IDF v6.0.0 Migration - Updated `MuxedLedStrip` (vendored `espressif/led_strip`) to v3.0.3 for ESP-IDF v6.0 compatibility - Updated IR component `CMakeLists.txt` for v6.0 build system changes - Added new direct dependencies: `espressif/usb` v1.3.0 and `espressif/network_provisioning` v1.2.2 - Fixed `System_Command.c` for ESP-IDF v6.0 / FreeRTOS 11 API changes: - `uxTaskGetSystemState` runtime counter now uses `configRUN_TIME_COUNTER_TYPE` - Replaced deprecated `esp_read_mac` with `esp_base_mac_addr_get` - Fixed `esp_partition_iterator_release` null-guard - Fixed `Serial_Console` component to derive firmware version string from CMake (`PROJECT_VER`) rather than a `main/` header, removing a cross-component include coupling ### Build System - `PROJECT_VER` in `CMakeLists.txt` is now derived directly from `VERSION_MAJOR`/`VERSION_MINOR` in `main/Version.h`, making `Version.h` the single source of truth for the version number ### Other - Improved USB error diagnostics in `NVM/USB.c` - Updated `README.md` open-source component versions table to reflect current dependencies - Bumped firmware to **Version 2.00** ## Test Plan - [x] Clean build with ESP-IDF v6.0.0 passes without warnings ℹ️ There is one warning in the build. It can be safely ignored. ` [295/1367] Building C object esp-idf/vfs/CMakeFiles/__idf_vfs.dir/vfs.c.obj .../.espressif/v6.0/esp-idf/components/vfs/vfs.c:31:9: warning: 'LOG_LOCAL_LEVEL' redefined 31 | #define LOG_LOCAL_LEVEL ESP_LOG_NONE | ^~~~~~~~~~~~~~~ <command-line>: note: this is the location of the previous definition ` - [x] `system version` serial console command reports correct firmware version - [x] `system tasks` command works with runtime stats enabled - [x] `system mac` command prints all four MAC addresses correctly - [x] `system partition` command lists partition table without crash - [x] BLE provisioning works with new SystemK interface - [x] IR transmit/receive works - [x] Audio playback works - [x] NeoPixels function correctly - [x] NVM settings persist across reboots - [x] USB host MSC mounts and logs diagnostics on failure Co-authored-by: Joe Kearney <joe@clubk.club> Reviewed-on: #18 |
||
|---|---|---|
| components | ||
| main | ||
| managed_components | ||
| partition_table | ||
| spiffs_image | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| dependencies.lock | ||
| LICENSE | ||
| partitions.csv | ||
| README.md | ||
| sdkconfig | ||
2024A Software
Overview
This is software for the 2024A "32ESPecial" based on the ESP-IDF.
The primary documentation for the 32ESPecial is on the KTag website at https://ktag.clubk.club/Devices/32ESPecial/.
You can ask questions (and get answers!) about this software on the KTag forum at https://forum.ktag.clubk.club/c/software/.
License: AGPL-3.0-or-later
This software is part of the KTag project, a DIY laser tag game with customizable features and wide interoperability.
Copyright © 2023-2026 Joseph P. Kearney and the KTag developers.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
There should be a copy of the GNU Affero General Public License in the LICENSE file in the root of this repository. If not, see http://www.gnu.org/licenses/.
Open-Source Software
This software in turn makes use of the following open-source software libraries and components: