Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2022-08-08 10:22:47 +0300
committerDavid Crocker <dcrocker@eschertech.com>2022-08-08 10:22:47 +0300
commit97d6c8cd1a5c4a0fd5d41589bd821c463eeb2b88 (patch)
tree1a83c14954d3f83df9b70a63f93562d4980014ba
parent3d1875dd7f661358b0c1743b4a9f2b82724fd566 (diff)
Temporarily increase wifi task priority when receiving data
-rw-r--r--src/Networking/ESP8266WiFi/WiFiSocket.cpp3
-rw-r--r--src/Networking/Network.cpp1
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();
}
}