generated from splatink/espnow-serial-idf
Software ACKs casue excess traffic. #1
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Total time spent: 25 minutes 3 seconds
Due date
splatink
25 minutes 3 seconds
No due date set.
Dependencies
No dependencies set.
Reference
splatink/inkChat#1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
By sniffing traffic with wireshark we can see the protocol and hardware itself sends a single ACK packet back any time it receives a message.
By default, this ACK packet is completely ignored in software, making ESPNOW connectionless (fire-and-forget). By using ACK in software, I have implemented a way to not only retransmit on failure, but also get status of remote commands.
This casues a double ACK.
For example the command /status means
Very heavy traffic for a single command. Not only is the command itself already sending an ACK back in hardware, but any software ACKs cause even more hardware ACKs.
Instead, write a wrapper function for transmitting any type of message (text, commands), that fires a packet, waits for a hardware ACK, if not, re-transmits.
For identifying what the ACK was for (and printing MSG OK, MSG FAIL, CHAN CH OK etc), just print it out locally when you get the command reply (0xEA, 0xEB etc). If you sent a message, print out the real ACK instead.
Being worked on in v02xx
Fixed in
c2878fc487