Aktionen
Retransmits¶
- In starting phase there is an auto-tune which requires traffic
- There are at least some CRC errors
Send package¶
- ringTransmitted.canPush()?
- store essage there
- Send it via RFM69
Receive package¶
- If type is "Acknowledge"
- find corresponding message
- mark slot as acked/nacked
- If regular message/resend
- If resend: is the package older than the last?, drop it
- is it not last+1? send NACK via RFM69
- fill it in the receive buffer
- directly send acknowledge via RFM69
Loop¶
- iterate Slots
- If WAITing: is message is older than ??ms, perform an resend
- If ACKed, pop it from the ring. Not the first non-ACKed? Error
- If NACKed, resend it, if there is no WAITing before
Open points¶
- Acknowledge gets lost; retransmit started
- last-id for every net. Drop message if it matches
- RFM-Class receives messages in ISR as fast as possible. Sending acknowledge is done in the loop.
- Order should be preserved.
- Makes things super slow
Von Maximilian Seesslen vor etwa 1 Jahr aktualisiert · 2 Revisionen