Projekt

Allgemein

Profil

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