Summary
audio_pipe_receive() deduplicates packets using only the 16-bit seq value. In a real group, multiple devices can legitimately emit the same sequence number.
Impact
Audio from one rider can be incorrectly dropped as a duplicate of another rider's packet if their sequence numbers collide inside the dedup window.
Evidence
- Dedup window stores only
uint16_t seq in main/audio_pipe.c:31-78
- RX path checks only
seq in main/audio_pipe.c:129-143
- Packet format in
main/group_mgr.h and docs/ARCHITECTURE.md has no sender identity for dedup purposes
Expected
Dedup should be scoped per sender/session, not globally per sequence number. That likely requires adding sender identity or session identity to the packet format and dedup key.
Notes
This is a functional issue for any multi-emitter broadcast mesh, not just an optimization.
Summary
audio_pipe_receive()deduplicates packets using only the 16-bitseqvalue. In a real group, multiple devices can legitimately emit the same sequence number.Impact
Audio from one rider can be incorrectly dropped as a duplicate of another rider's packet if their sequence numbers collide inside the dedup window.
Evidence
uint16_t seqinmain/audio_pipe.c:31-78seqinmain/audio_pipe.c:129-143main/group_mgr.handdocs/ARCHITECTURE.mdhas no sender identity for dedup purposesExpected
Dedup should be scoped per sender/session, not globally per sequence number. That likely requires adding sender identity or session identity to the packet format and dedup key.
Notes
This is a functional issue for any multi-emitter broadcast mesh, not just an optimization.