Projekt

Allgemein

Profil

Retransmits » Historie » Version 4

Maximilian Seesslen, 02.04.2025 17:05

1 3 Maximilian Seesslen
h1. Modes
2
3 4 Maximilian Seesslen
h2. Unrelated
4 3 Maximilian Seesslen
5
* Send CAN messages as Broadcast messages; fire and forget
6
* Good enough for sensor values
7
* Robust code, not much that can fail
8
* Not good enough for e.g. Flashing firmware on remote device or even scanning nodes.
9
10 4 Maximilian Seesslen
h2. Related
11 3 Maximilian Seesslen
12
* Each package need an acknowledge
13
* Retransmitts are send if acknowledge is missing
14 1 Maximilian Seesslen
* Heavy traffic if nodes are blocking each other.
15
* Complex code, but ok
16 4 Maximilian Seesslen
* Order may not be guearanteed / optional
17 1 Maximilian Seesslen
18 4 Maximilian Seesslen
h1. Related
19 1 Maximilian Seesslen
20 4 Maximilian Seesslen
h2. Retransmits
21
22 2 Maximilian Seesslen
* In starting phase there is an auto-tune which requires traffic
23
* There are at least some CRC errors
24
25 4 Maximilian Seesslen
h2. Send package
26 2 Maximilian Seesslen
27
* ringTransmitted.canPush()?
28
* store essage there
29
* Send it via RFM69
30
31
h2. Receive package
32
33
* If type is "Acknowledge"
34
** find corresponding message
35
** mark slot as acked/nacked
36
37
* If regular message/resend
38
** If resend: is the package older than the last?, drop it
39
** is it not last+1? send NACK via RFM69
40
** fill it in the receive buffer
41
** directly send acknowledge via RFM69
42
43
h2. Loop
44
45
* iterate Slots
46
* If WAITing: is message is older than ??ms, perform an resend
47
* If ACKed, pop it from the ring. Not the first non-ACKed? Error
48
* If NACKed, resend it, if there is no WAITing before 
49
50
h2. Open points
51
52
* Acknowledge gets lost; retransmit started
53
** last-id for every net. Drop message if it matches
54
55
* RFM-Class receives messages in ISR as fast as possible. Sending acknowledge is done in the loop. 
56
** Order should be preserved.
57
** Makes things super slow