Jump to content

Verständnisfrage zu getWifiBufferInfo()


Recommended Posts

Hallo zusammen,

 

ich habe mal refreshWifiStatus() und getWifiBufferInfo() aufgerufen und war überrascht, dass die lowWatermark nach einem Connect und getStackVoltage() noch bei 1500 steht und nach einigen Servo und Status-Befehlen bei 1493. Nur wenn ich sehr viel IO erzeuge geht es mal auf 1450 zurück.

 

Werden die Commands inzwischen so schnell aus dem Puffer geholt oder interpretiere ich die Zahl falsch: 1500 würde ja bedeuten, dass nie wirklich was im Puffer steht. 1493 sind mal gerade 7 Bytes und die meisten Befehle nutzen 8 oder mehr Bytes.

Link to comment
Share on other sites

Um den internen WIFI Buffer zu füllen, musst du viele Callbacks aktivieren (damit der Sendebuffer immer voll ist) und gleichzeitig viele Setter oder Getter aufrufen (damit es passieren kann, dass der Empfangsbuffer voll ist während ich etwas senden möchte).

 

Die Kommunikation von dem WIFI Modul ist so gebaut, dass ich immer gleichzeitig Daten empfange wenn ich welche sende. Dadurch kann es sein, dass ich Daten bekomme während mein Eingangsbuffer voll ist (weil ich gerade einen Callback sende). Dazu brauche ich den zusätzlichen Buffer wofür du dir die

lowWatermark

holen kannst.

 

Eigentlich hat das WIFI Modul selbst intern genug Buffer. Wenn die das Kommunikationsprotokoll ein wenig cleverer gebaut hätten, hätte ich den zusätzlichen Buffer gar nicht gebraucht...

Link to comment
Share on other sites

Den Satz verstehe ich nicht so recht:

Die Kommunikation von dem WIFI Modul ist so gebaut, dass ich immer gleichzeitig Daten empfange wenn ich welche sende

Der Master bekommt Daten vom WIFI Modul, wenn der Master welche rausschickt? Das hat nichts zu tun mit API-Befehlen ohne Response - oder? Da wird ja nichts mehr zurück geschickt, dachte ich zumindest.

Link to comment
Share on other sites

Das hat nichts mit API Anfragen und Antworten zu tun. Wir kommunizieren mit dem WIFI Modul über SPI und bei SPI ist es so, dass bei jeder Flanke auf der Clock ein Bit von Slave zum Master und ein Bit vom Master zum Slave übertragen wird. Dadurch kann es passieren, dass ich Daten empfange während ich Daten sende. Dadurch brauchen wir den zusätzlichen Buffer. Ist ein reines Implementierungsdetail.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...