Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:dev:tailcontrol-release-notes [2026/09/21 20:23] – [TailControl v5.4.7] darkgrueen:dev:tailcontrol-release-notes [2026/09/25 20:35] (current) – darkgrue
Line 1: Line 1:
 ====== TailControl Release Notes ====== ====== TailControl Release Notes ======
 +
 +
 +===== TailControl v5.4.8 =====
 +
 +==== Fixed ====
 +  * Removed duplicated line in console banner logo.
 +  * **Serial console dropping characters and lines on ESP32-S3 boards (EarGear 2 v4.1, ClawGear v4.1).** The Arduino-ESP32 3.3.7 HW USB CDC driver silently discards up to 64 bytes when ''Serial'' is written from a task running on the other core from its interrupt handler. Its ISR ignores a short FIFO write while ''HWCDC::write()'' commits the FIFO from the calling core. All console output now goes through a single writer task pinned to the ISR core, and application tasks are pinned to ''ARDUINO_RUNNING_CORE'' on USB CDC builds.
 +  * **Console lines losing their beginning after brief USB link dropouts.** The HW USB CDC TX buffer is increased from 256 to 2048 bytes (''USB_CDC_TX_BUFFER_SIZE''), which absorbs the periodic 2–6 ms host SOF dropouts instead of evicting queued output.
 +  * **ClawGear: Tilt and Clap Mode only responded while a move was running.** The accelerometer servicing condition was inverted. The fix from ''b093b59'' was lost in revert ''6d8cfb6''. Detection now runs while idle and is suspended during moves, when servo motion disturbs the readings.
 +  * **ClawGear: uninitialized ''clapModeIsOn'' and ''prevClapModeIsOn''** could cause a spurious or missed ''CLAP ARMED'' edge on startup.
 +  * **ClawGear: the tilt classifier low-pass filter is reseeded after missed updates** (a move running or modes off), so stale readings can't trigger a tilt right after a move.
 +  * **ClawGear: the tilt state is reset when Tilt Mode is armed**, so the current tilt triggers immediately, as on EarGear 2.
 +
 +==== Added ====
 +  * Added ''ARMED'' and ''DISARMED'' console messages to Clap, Listen, and Tilt Modes that now emits correctly on the edge detection of those modes transitioning state.
 +  * ''Log'' module (''include/Log.h'', ''src/Log.cpp'') for thread-safe console output:
 +    * Each message is formatted in full and queued as one item. A single writer task performs every ''Serial.write()'', so lines from different tasks can't interleave.
 +    * Uses a 2 KB queue with a static ring buffer, a static writer task and no heap allocation.
 +    * API: ''logPrintf()'', ''logPrintln()'', ''logPuts()'', and ''logFlush()'' to drain the queue before a blocking operation or power-off.
 +    * The ''LOG_DEBUG*'' (''FDEBUG'') and ''LOG_TERM*'' (''FDEBUG || TERMINAL'') macros replace the per-call ''#if defined(...)'' guards.
 +    * Output loss is now visible: a cut line ends in ''~'', and ''FDEBUG'' builds print ''~ LOG: N message(s) dropped or truncated ~''.
 +
 +==== Changed ====
 +  * All console output in ''src/'' is migrated from ''Serial.print*'' to ''Log.h''. The printed text is unchanged; lines that were built from several ''Serial.print()'' calls are now sent as one message.
 +  * ''DBG_PRINTLN'' (and therefore ''SEND_MSG'') uses ''logPrintln()''.
 +  * ''logFlush()'' is called before every ''PIN_HOLD'' power-off, and replaces ''Serial.flush()'' before blocking homing.
 +  * The startup banner no longer calls ''Serial.flush()'' between pieces.
 +  * Application tasks are created with ''xTaskCreatePinnedToCore(..., RTOS_APP_TASK_CORE)''. The pin applies to USB CDC builds only; UART builds (Flutter, Mini, MiTail) keep no core affinity.
 +
 +==== Removed ====
 +  * **ClawGear:** the unused global ''lpf_s'' instance and its pre-loop seed call. Both were orphaned in ''9f25f3a'' when the classifier got its own filter state.
 +
 +==== Internal ====
 +  * Native test mocks: added logger stubs, since ''Definitions.h'' now includes ''Log.h''.
 +  * Fixed warnings in release builds (no ''FDEBUG''): deprecated ''++'' on ''volatile'', an unused static function, and debug-only variables in ''initServos()''.
  
  
Line 84: Line 119:
  
   * Rebranded "TailCoNTROL" to "TailControl" (under duress).   * Rebranded "TailCoNTROL" to "TailControl" (under duress).
- 
   * Add full EarGear 2 support:   * Add full EarGear 2 support:
     * Add dedicated firmware moves for EarGear 2.     * Add dedicated firmware moves for EarGear 2.
Line 95: Line 129:
     * Add configuration parameter for Listen move group selection.     * Add configuration parameter for Listen move group selection.
     * Support EG2 Tilt and Listen Mode in No-phone Mode.     * Support EG2 Tilt and Listen Mode in No-phone Mode.
- 
   * Move TailCoNTROL to new BLE UUIDs.   * Move TailCoNTROL to new BLE UUIDs.
   * Reorganized code units and functions to improve organization and readability.   * Reorganized code units and functions to improve organization and readability.
Line 124: Line 157:
   * Fix race condition between updateMoves() and setMove() / setDSSPMove() that caused stuttering/short moves (thank you Mrs. Tailer for spotting this).   * Fix race condition between updateMoves() and setMove() / setDSSPMove() that caused stuttering/short moves (thank you Mrs. Tailer for spotting this).
   * Improved debug messages.   * Improved debug messages.
- 
   * Update ESP32Servo library to 1.2.1.   * Update ESP32Servo library to 1.2.1.
   * Updated JLed library to v4.15.0.   * Updated JLed library to v4.15.0.
   * Updated NimBLE-Arduino library to v2.1.2 (made transitions for breaking changes).   * Updated NimBLE-Arduino library to v2.1.2 (made transitions for breaking changes).
   * Updated ServoEasing library to v3.4.0 (made transitions for breaking changes).   * Updated ServoEasing library to v3.4.0 (made transitions for breaking changes).
- 
   * Updated BLE_OTA_Python scripts and documentation.   * Updated BLE_OTA_Python scripts and documentation.
   * Added script to build unified binary for EarGear 2 firmware.   * Added script to build unified binary for EarGear 2 firmware.
   * Added ESP Web Tools configuration for writing EarGear 2 firmware.   * Added ESP Web Tools configuration for writing EarGear 2 firmware.
   * Fix PlatformIO $extra_scripts to be cumulative.   * Fix PlatformIO $extra_scripts to be cumulative.
- 
   * Update Tail Control Protocol to reflect as-built.   * Update Tail Control Protocol to reflect as-built.
   * Add additional details to Service Notes about the Glow Tip.   * Add additional details to Service Notes about the Glow Tip.
 +
  
 ===== TailControl v5.0.9 ===== ===== TailControl v5.0.9 =====
Line 176: Line 207:
   * Updated ESP32Servo library to v1.2.0.   * Updated ESP32Servo library to v1.2.0.
   * Updated documentation.   * Updated documentation.
 +