diff options
author | David Crocker <dcrocker@eschertech.com> | 2022-08-08 10:22:47 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2022-08-08 10:22:47 +0300 |
commit | 97d6c8cd1a5c4a0fd5d41589bd821c463eeb2b88 (patch) | |
tree | 1a83c14954d3f83df9b70a63f93562d4980014ba | |
parent | 3d1875dd7f661358b0c1743b4a9f2b82724fd566 (diff) |
Temporarily increase wifi task priority when receiving data
-rw-r--r-- | src/Networking/ESP8266WiFi/WiFiSocket.cpp | 3 | ||||
-rw-r--r-- | src/Networking/Network.cpp | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/Networking/ESP8266WiFi/WiFiSocket.cpp b/src/Networking/ESP8266WiFi/WiFiSocket.cpp index c6c46eee..62160b73 100644 --- a/src/Networking/ESP8266WiFi/WiFiSocket.cpp +++ b/src/Networking/ESP8266WiFi/WiFiSocket.cpp @@ -11,6 +11,7 @@ #include <Networking/NetworkBuffer.h> #include <Platform/RepRap.h> +#include <Platform/TaskPriorities.h> #include "WiFiInterface.h" const unsigned int MaxBuffersPerSocket = 4; @@ -257,6 +258,7 @@ void WiFiSocket::ReceiveData(uint16_t bytesAvailable) noexcept { // Read data into the existing buffer const size_t maxToRead = min<size_t>(lastBuffer->SpaceLeft(), MaxDataLength); + TaskBase::SetCurrentTaskPriority(TaskPriority::SpinPriority + 1); // temporarily increase our priority so we get woken up when the transfer is complete const int32_t ret = GetInterface()->SendCommand(NetworkCommand::connRead, socketNum, 0, 0, nullptr, 0, lastBuffer->UnwrittenData(), maxToRead); if (ret > 0 && (size_t)ret <= maxToRead) { @@ -274,6 +276,7 @@ void WiFiSocket::ReceiveData(uint16_t bytesAvailable) noexcept if (buf != nullptr) { const size_t maxToRead = min<size_t>(NetworkBuffer::bufferSize, MaxDataLength); + TaskBase::SetCurrentTaskPriority(TaskPriority::SpinPriority + 1); // temporarily increase our priority so we get woken up when the transfer is complete const int32_t ret = GetInterface()->SendCommand(NetworkCommand::connRead, socketNum, 0, 0, nullptr, 0, buf->Data(), maxToRead); if (ret > 0 && (size_t)ret <= maxToRead) { diff --git a/src/Networking/Network.cpp b/src/Networking/Network.cpp index cf012cc0..376b90f6 100644 --- a/src/Networking/Network.cpp +++ b/src/Networking/Network.cpp @@ -558,6 +558,7 @@ void Network::Spin() noexcept if (!doneSomething) { + TaskBase::SetCurrentTaskPriority(TaskPriority::SpinPriority); // restore normal priority RTOSIface::Yield(); } } |