Skip to content

V2.6

Latest

Choose a tag to compare

@vanvught vanvught released this 29 Mar 13:49

Release Notes

Highlights

  • Improved HTTP server configurability (index-only mode, feature guards, optimization flags)
  • Safer formatting utilities (UTC offset handling, snprintf fixes)
  • Config + RDM improvements (factory reset support, safer defaults)
  • General cleanup, correctness fixes, and modernization

Core Improvements

Safer Formatting & Utilities

  • Use full buffer size in snprintf (removed unnecessary truncation)
  • Reworked UTC offset formatting:
    • Correct handling of zero/negative offsets
    • Always emits + for positive offsets
  • Introduced:
    • format::UtcOffset
    • Append2Digits
    • Renamed FormatFloat → Float
  • Added and improved helper structure

Console & Logging

  • Ensured consistent line endings:
    • Added trailing \n to console::Error across multiple modules
  • Replaced:
    • console::Puts(": ") → console::Write(": ", 2)
  • Added console::Write declaration

HTTP Server & Content

Content Pipeline Overhaul

  • Major rewrite of generate_content.cpp:
    • Modular helpers
    • Safer file/string handling
    • Feature-aware content generation
  • Introduced embedded pixel metadata JSON:
    • pixeltype.json generated via parse_pixeltype.py
    • Compiled into firmware (pixeltype.json.h)
  • Added:
    • FilesContent::hash (FNV-1a)
    • Runtime hash lookup for faster file matching

Feature Guards & Build Flexibility

  • Conditional content inclusion:
    • Pixel content only when relevant output is enabled
  • New build modes:
    • CONFIG_HTTP_HTML_INDEX_ONLY → minimal HTTP footprint
  • Simplified build flags:
    • Removed ENABLE_CONTENT, now driven by ENABLE_HTTPD

HTTPD Optimizations

  • Configurable optimization levels:
    • CONFIG_HTTPD_OPTIMIZE_O2
    • CONFIG_HTTPD_OPTIMIZE_O3
    • CONFIG_HTTPD_OPTIMIZE_NONE
  • Cleaner handler logic and conditional compilation

Configuration & System

Config Store

  • Added:
    • ConfigStore::Reset()
  • Remote factory reset now:
    • Clears config
    • Triggers reboot

RDM Support

  • Added:
    • SetFactoryDefaults() declaration + weak default implementation
  • Integrated into responder logic

Memory & Allocator

  • Increased default network blocks:
    • kBlocks: 8 → 12
  • Improved error messages:
    • "Full!" → "Allocate:Full!\n"

Networking & Compliance

Hostname Compliance

  • Updated to meet RFC 1123
    • Replaced _ with - in prefixes
  • Added documentation for valid hostname rules

Misc Networking

  • Switched include to network_udp
  • Cleaned up TCP diagnostics and formatting

Cleanup & Maintenance

  • Removed unused RDM-related includes and code
  • Eliminated duplicate function calls
  • Improved formatting and readability across modules
  • Expanded static initializers for clarity
  • Added compile-time guards for STORE backends (file/I2C/SPI)