LwIP tcp_write() ERR_MEM

OP #7497309
Lesenswert?

Ich streame Daten per TCP zu einem PC und benutze dafür im STM32 LwIP. Die Datenrate kann recht hoch sein und ich möchte gerne vor einem Aufruf von tcp_write() wissen, ob noch genügend speicher da ist. Aus der LwIP Dokumentation entnehme ich: "The proper way to use this function is to call the function with at most tcp_sndbuf() bytes of data". Das habe ich gemacht aber es kann immer noch vorkommen, dass ERR_MEM zurückgegeben wird.

Wie kann ich vor Aufruf von tcp_write prüfen, ob noch genug Speicher da ist? Das ist mir wichtig, da ich Daten von einer queue hole und nicht wieder zurückschieben kann aber wenn ich weiß, dass ein senden fehlschlagen würde könnte ich die Datenrate intern drosseln.

Gast #7497320
Lesenswert?

Ich weis die Antwort nicht, würde allerdings so vorgehen:

Im Quelltext von tcp_write() nachschauen, was genau den Fehler ERR_MEM auslöst. Vermutlich wird irgendeine Funktion aufgerufen, die den Fehler meldet oder es werden zwei Variablen miteinander verglichen. Den gleichen Check kannst du dann in dein Programm einbauen und benutzen, bevor du tcp_write() aufrufst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren