Releases: vanvught/GD32F103RC-DMX512-RDM
V2.4
Major Refactor: RDM Discovery & Device API Stabilization
This release introduces a significant refactor of the RDM subsystem, stabilizing the device API and restructuring discovery handling. The changes aim to improve maintainability, consistency across modules, and future extensibility.
RDM Discovery Redesign
- Introduced new RDM headers:
- rdm_device_base.h
- rdm_device_info.h
- rdm_discovery.h
- The legacy rdmdiscovery implementation has been refactored and renamed to:
- rdm_discovery_statemachine
- Discovery logic and constants were reorganized and namespaced.
New RDM Device API - RDM device access has been migrated to structured types:
- rdm::device::Base
- rdm::device::Info
- Updated all call sites to use the new API.
- UID, serial number, and label handling now use the new device structures.
Configuration Store Changes
The configuration storage layout has been updated:
Changes
- Replaced set_list fields with flag-based configuration.
- Added helper:
- RdmDeviceCopyArray
- Corrected array update signatures and sizes.
Field Updates - label → port_name
- Buffer sizes adjusted to match the new naming.
Build system
- Removed GCC optimization flag: -fprefetch-loop-arrays
Miscellaneous
- Updated copyright years → 2026
- Minor formatting and include cleanups
- Variable rename:
- type → kType
- Simplified Sync() implementation to a one-line function.
- Reordered RDM conditional logic in:
- lib-pixeldmx/Rules.mk
V2.3
Release Notes
Maintenance & Code Quality Improvements
This release focuses on internal cleanups, diagnostics improvements, and maintenance updates across the GD32, HAL, and Pixel DMX codebase.
- Replaced bare assert(0) usages with clearer, more expressive assertions (assert(false) or assert(false && "")) to improve diagnostics and explicitly mark unreachable code paths.
- Updated copyright headers across multiple files to include 2026.
- Performed minor whitespace, formatting, indentation, and include-ordering cleanups.
- Adjusted NDEBUG handling in Pixel DMX JSON code.
- Applied small API tidies and refactors (cosmetic only, no behavior changes).
- Restored or added license headers in a small number of JSON parameter files.
- General source maintenance in several DMX, display, UDF, global, and Pixel DMX files.
These changes are non-functional and intended purely for readability, consistency, and maintainability.
New Utility Scripts
Several new helper scripts have been added under common/scripts to support development, testing, and device flashing workflows:
- udp_send.py
A reusable UDP send/receive module with a command-line interface for quick testing and scripting. - gd32/do-tftp.py
A Python helper to drive TFTP transfers, built on top of udp_send and the system tftp client. - gd32/flash.py
A GD32 ROM bootloader flashing tool with an integrated UART monitor for upload and debugging.
Summary
- Improved assert diagnostics and unreachable-code clarity
- License and copyright updates (now through 2026)
- Formatting, whitespace, and include-order cleanups
- New Python utilities for UDP, TFTP, and GD32 flashing
- No functional or protocol-level behavior changes
V2.2
Release Notes – Codebase Refactor & Modularization
- Major project restructuring
- Reorganized libraries and source files into a clearer, more modular directory structure.
- Moved, renamed, or removed numerous files to reduce duplication and improve maintainability.
- Legacy code cleanup
- Removed deprecated and unused code from lib-lightset, lib-network, lib-properties, and older display components.
- Eliminated redundant parameter and platform-specific files no longer in use.
- Centralized common functionality
- Migrated shared network, properties, and parameter code into a unified common directory.
- Added new utility headers and source files for reusable functionality.
- JSON-based configuration support
- Added new JSON configuration and parameter files.
- Introduced JSON helper utilities and parameter classes to standardize configuration handling and prepare for future extensibility.
- DMX, RDM, and pixel refactor
- Refactored DMX, RDM device handling, and pixel-related libraries for clearer structure and better separation of responsibilities.
- Unified RDM device information handling.
- Build system updates
- Updated Makefiles, build scripts, and compile_commands.json to reflect the new project structure.
- Improved GD32 platform support and hardware abstraction organization.
- Network stack reorganization
- Flattened lib-network source layout by moving files from subdirectories into a simpler structure.
- Improved clarity of EMAC and Linux network interface implementations (no functional changes).
- Debug macro consistency
- Replaced DEBUG_ENTRY / DEBUG_EXIT macros with function-style DEBUG_ENTRY() / DEBUG_EXIT() across the codebase for consistency and readability.
- Overall impact
- Significantly improved modularity, readability, and long-term maintainability.
- Laid groundwork for future feature expansion and more robust JSON-based configuration across modules.
V2.1
- Improved startup_gd32fxxx.S
- CMSIS has its own project now
- Upgraded to CMSIS V5.0.5
- Removed lib-debug. Now part of lib-hal
- Updated to latest GD32 Firmware
- Introduced debug software UART0
- Major cleanup lib-configstore
- In order to support Newlib; removed lib-c, lib-c++ and added lib-clib
- In order to support FreeRTOS; Added Software timers in H.A.L. framework.
- Get/Set pixel type by RDM (introduced by @PharosMarcusB)
V2.0
- Improved build system
- Added stack debug framework
- Removed not used source files
- Added support DMX delta output
- Added Manufacturer PIDs (https://www.gd32-dmx.org/rdm.html)
- Added support for void __libc_init_array(void)
- Changed the layout of the config store.
- Before upgrading the firmware it is advised to make a backup of the configuration.
- After the upgrade, then restore the saved configuration.
V1.6
- lib-devices : Added support for adc MCP3424
- lib-display : DisplayHandler is now a free function
- lib-hal : Removed class LedBlink. The status led functionality is now in class Hardware
- lib-rdmsensors : Added support for thermistor. Based on https://www.abelectronics.co.uk/p/69/adc-pi-raspberry-pi-analogue-to-digital-converter with https://www.adafruit.com/product/372