Retransmits » Historie » Version 2
Maximilian Seesslen, 24.10.2023 19:25
| 1 | 1 | Maximilian Seesslen | h1. Retransmits |
|---|---|---|---|
| 2 | 2 | Maximilian Seesslen | |
| 3 | * In starting phase there is an auto-tune which requires traffic |
||
| 4 | * There are at least some CRC errors |
||
| 5 | |||
| 6 | h1. Send package |
||
| 7 | |||
| 8 | * ringTransmitted.canPush()? |
||
| 9 | * store essage there |
||
| 10 | * Send it via RFM69 |
||
| 11 | |||
| 12 | h2. Receive package |
||
| 13 | |||
| 14 | * If type is "Acknowledge" |
||
| 15 | ** find corresponding message |
||
| 16 | ** mark slot as acked/nacked |
||
| 17 | |||
| 18 | * If regular message/resend |
||
| 19 | ** If resend: is the package older than the last?, drop it |
||
| 20 | ** is it not last+1? send NACK via RFM69 |
||
| 21 | ** fill it in the receive buffer |
||
| 22 | ** directly send acknowledge via RFM69 |
||
| 23 | |||
| 24 | h2. Loop |
||
| 25 | |||
| 26 | * iterate Slots |
||
| 27 | * If WAITing: is message is older than ??ms, perform an resend |
||
| 28 | * If ACKed, pop it from the ring. Not the first non-ACKed? Error |
||
| 29 | * If NACKed, resend it, if there is no WAITing before |
||
| 30 | |||
| 31 | h2. Open points |
||
| 32 | |||
| 33 | * Acknowledge gets lost; retransmit started |
||
| 34 | ** last-id for every net. Drop message if it matches |
||
| 35 | |||
| 36 | * RFM-Class receives messages in ISR as fast as possible. Sending acknowledge is done in the loop. |
||
| 37 | ** Order should be preserved. |
||
| 38 | ** Makes things super slow |