Egal ob aktiv oder passiv, in beiden Fällen brauchst du eine
Hauptschleife, in der der lwIP Stack möglichst häudig aufgerufen wird,
sowie einen Timer, der regelmäßig alle 250ms aufgerufen wird.
Hintergrund ist der:
In der Hauptschleife überprüft der Stack durch Hardwarezugriffe, ob ein
Paket empfangen wurde. Wenn ja, dann wird es verarbeitet.
Der Timer ist wiederum dafür verantwortlich, dass zeitgesteuerte Dinge
zum richtigen zeitpunkt passieren. Zum beispiel die Wiederholung eines
Sendevorgangs, wenn der Empfänger nicht antwortet.
Bei µIP konnte der Timer wahlweise im Interrupt abgearbeitet werden,
oder in der Hauptschleife, was die bevorzugte Methode war. Der
Timer-Interrupt hat dann nur alle 250ms ein Flag gesetzt das "die zeit
ist abgelaufen" bedeutete. In der Hauptschleife wurde dieses Flag bei
jedem Durchlauf abgefragt und wenn das Flag gesetzt war, wurde die
Timer-Funktion von µIP aufgerufen.
Bei lwIP könnte das ein bisschen anders ablaufen - ich kenne mich damit
nicht aus. Aber ganz sicher brauchst du eine Hauptschleife, welche lwIP
möglichst oft aufruft. Denn je seltener du lwIP aufrufst, umso langsamer
wird es. Wenn du gar keine Hauptschleife hast, werden nur ganz primitive
Sachen funktionieren, wie das Senden eines einzelnen UDP Paketes ohne
Wiederholung und ohne Verarbeitung der Response.