diff --git a/.changesets/ethernet-diagnostics-forwarding.md b/.changesets/archive/v6.2.0/ethernet-diagnostics-forwarding.md similarity index 100% rename from .changesets/ethernet-diagnostics-forwarding.md rename to .changesets/archive/v6.2.0/ethernet-diagnostics-forwarding.md diff --git a/.changesets/ethernet-remove-default-sntp.md b/.changesets/archive/v6.2.0/ethernet-remove-default-sntp.md similarity index 100% rename from .changesets/ethernet-remove-default-sntp.md rename to .changesets/archive/v6.2.0/ethernet-remove-default-sntp.md diff --git a/.changesets/fix-hwarfault-warning.md b/.changesets/archive/v6.2.0/fix-hwarfault-warning.md similarity index 100% rename from .changesets/fix-hwarfault-warning.md rename to .changesets/archive/v6.2.0/fix-hwarfault-warning.md diff --git a/.changesets/scheduler-monotonic.md b/.changesets/archive/v6.2.0/scheduler-monotonic.md similarity index 100% rename from .changesets/scheduler-monotonic.md rename to .changesets/archive/v6.2.0/scheduler-monotonic.md diff --git a/.changesets/visual-watchdog.md b/.changesets/archive/v6.2.0/visual-watchdog.md similarity index 100% rename from .changesets/visual-watchdog.md rename to .changesets/archive/v6.2.0/visual-watchdog.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 8582dc5dc..7aa27ab0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,28 @@ The revived semantic-versioning baseline starts at `v5.0.0`. Historical releases that predate this file remain available in Git tags such as `v1.0.0`, `v3.0.0`, `v4.0.0-beta`, and `h10`. +## v6.2.0 - 2026-07-10 + +### Features + +- Add variable-length TCP orders, diagnostic forwarding, and flush throttling + - `TcpOrderStreamParser` now supports variable-length orders: when an order's `get_size()` returns 0, all remaining stream data is passed to `parse()`, and the post-parse size is used for byte consumption. A `reset_for_receive()` hook is called after consumption so orders can reset state for the next packet. + - `Order` gains a virtual `reset_for_receive()` no-op that subclasses can override. + - `Socket` constructor no longer panics on `ERR_RTE` during `tcp_connect()` — sets `pending_connection_reset` instead, letting the connection retry when the route becomes available. + - `OrderProtocolDiagnosticSink` now accepts a target `OrderProtocol*` via its constructor, so diagnostic records are sent to a single socket instead of broadcasting to all open sockets. + - `DiagnosticTransportOrder` now parses incoming diagnostic orders (IDs 1555, 2555, 3000) and re-publishes them via `Hub::publish_runtime_*()`, enabling forwarding of remote board diagnostics to the control station. + - `Diagnostics::Hub::flush_pending` throttles records to at most one per 100 ms per priority level (urgent and non-urgent tracked separately) to prevent flooding sinks. + - Default TCP keepalive values tightened: 30 ms idle, 20 ms interval, 2 probes (commented out for now since it can't keep connection with the backend). + - `lwipopts.h`: `MEMP_NUM_SYS_TIMEOUT` increased by 10 to avoid pool exhaustion with SNTP and whatever else it may happen, `TCP_TMR_INTERVAL` reduced to 10 ms for faster keepalive response. + - Added `Diagnostics::install_ethernet_sink(OrderProtocol*)` to register the Ethernet sink with a specific target socket. +- Makes the watchdog reset check block the system and have a visual indication similar to hardfault + +### Fixes + +- Removes the default SNTP server from Ethernet configuration, defaulting to nullptr instead +- Fix a warning about symbols in HardfaultTrace (doesn't change any behaviour) +- Adds a check to ensure return values from Scheduler::get_global_tick() are monotonic (never get decreasing values) + ## v6.1.3 - 2026-06-02 ### Fixes diff --git a/VERSION b/VERSION index 88d06f108..6abaeb2f9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.1.3 +6.2.0