Projekt

Allgemein

Profil

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