044e9913a7
The periodic TX timer had an arbitrary phase against packet boundaries, so packets waited up to one packet time (different after every restart). - One-shot esp_timer aimed at the next packet's due time from PTP, with the clock re-read after sending. - 1 kHz tone from a per-rate lookup table (one period = rate/1000 samples) instead of sinf() per sample. Measured (RTP time - arrival, 4 ms vs 1 ms packets, expected -3.07 ms incl. wire time): -3.3 ms extra before, now -3.14 ms. Tone within 1.0 LSB of the ideal PTP-phased sine, no gaps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>