From 97d6c8cd1a5c4a0fd5d41589bd821c463eeb2b88 Mon Sep 17 00:00:00 2001 From: David Crocker Date: Mon, 8 Aug 2022 08:22:47 +0100 Subject: Temporarily increase wifi task priority when receiving data --- src/Networking/ESP8266WiFi/WiFiSocket.cpp | 3 +++ src/Networking/Network.cpp | 1 + 2 files changed, 4 insertions(+) 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 #include +#include #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(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(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(); } } -- cgit v1.2.3