Implement packet bundling #258

Closed
opened 2026-04-05 17:52:22 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @0forks on 7/23/2023

Companion PR: https://github.com/SlimeVR/SlimeVR-Server/pull/794

ESP8266 does not support frame aggregation natively in its networking implementation, this PR adds it on application level to decrease airtime by 50-70%.

  • New packet 22 (0x16): feature flags - packet-sized bitset (uint8[length]);
  • New packet 100 (0x64): bundle - contains multiple type- (uint32) and length- (uint16) prefixed packets.

In case of single sensor, sends rotation and acceleration packets (and everything produced by Sensor::sendData) as one.
In case of multiple sensors, by default attempts to wait for data from all sensors with a timeout of 10ms (send at no less than 100Hz).

*Originally created by @0forks on 7/23/2023* Companion PR: https://github.com/SlimeVR/SlimeVR-Server/pull/794 ESP8266 does not support frame aggregation natively in its networking implementation, this PR adds it on application level to decrease airtime by 50-70%. - New packet 22 (0x16): feature flags - packet-sized bitset (uint8[length]); - New packet 100 (0x64): bundle - contains multiple type- (uint32) and length- (uint16) prefixed packets. In case of single sensor, sends rotation and acceleration packets (and everything produced by `Sensor::sendData`) as one. In case of multiple sensors, by default attempts to wait for data from all sensors with a timeout of 10ms (send at no less than 100Hz).
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/SlimeVR-Tracker-ESP#258