From 739db562900b850ecc13918586ad35ba303e6980 Mon Sep 17 00:00:00 2001 From: Matteo Pignataro <matteo.pignataro@skywarder.eu> Date: Tue, 12 Sep 2023 07:19:16 +0000 Subject: [PATCH] [CanProtocol] Added thread priority as parameter --- src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp | 9 +++++---- src/shared/drivers/canbus/CanProtocol/CanProtocol.h | 4 +++- .../drivers/canbus/CanProtocol/test-can-protocol.cpp | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp b/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp index c2714aedf..a58beed63 100644 --- a/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp +++ b/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp @@ -30,8 +30,9 @@ namespace Boardcore namespace Canbus { -CanProtocol::CanProtocol(CanbusDriver* can, MsgHandler onReceive) - : can(can), onReceive(onReceive) +CanProtocol::CanProtocol(CanbusDriver* can, MsgHandler onReceive, + miosix::Priority threadPriority) + : can(can), onReceive(onReceive), threadPriority(threadPriority) { } @@ -46,7 +47,7 @@ bool CanProtocol::start() if (!sndStarted) { sndThread = miosix::Thread::create( - sndLauncher, skywardStack(4 * 1024), miosix::MAIN_PRIORITY, + sndLauncher, skywardStack(4 * 1024), threadPriority, reinterpret_cast<void*>(this), miosix::Thread::JOINABLE); if (sndThread != nullptr) @@ -59,7 +60,7 @@ bool CanProtocol::start() if (!rcvStarted) { rcvThread = miosix::Thread::create(rcvLauncher, skywardStack(4 * 1024), - miosix::MAIN_PRIORITY, + threadPriority, reinterpret_cast<void*>(this)); if (rcvThread != nullptr) diff --git a/src/shared/drivers/canbus/CanProtocol/CanProtocol.h b/src/shared/drivers/canbus/CanProtocol/CanProtocol.h index 3df511ecd..0f437a53d 100644 --- a/src/shared/drivers/canbus/CanProtocol/CanProtocol.h +++ b/src/shared/drivers/canbus/CanProtocol/CanProtocol.h @@ -55,7 +55,8 @@ public: * * @param can Pointer to a CanbusDriver object. */ - CanProtocol(CanbusDriver* can, MsgHandler onReceive); + CanProtocol(CanbusDriver* can, MsgHandler onReceive, + miosix::Priority threadPriority); /** * @brief Start the receiving and sending threads. @@ -180,6 +181,7 @@ private: miosix::Thread* sndThread = nullptr; miosix::Thread* rcvThread = nullptr; + miosix::Priority threadPriority; SyncCircularBuffer<CanMessage, 10> outQueue; diff --git a/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp b/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp index 686ebd184..799338d4d 100644 --- a/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp +++ b/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp @@ -70,7 +70,7 @@ int main() CanbusDriver* driver2 = new CanbusDriver(CAN2, config, bitTiming); // // Prepare the can driver - CanProtocol protocol(driver2, print); + CanProtocol protocol(driver2, print, miosix::MAIN_PRIORITY); // Add a filter to allow every message Mask32FilterBank f2(0, 0, 1, 1, 0, 0, 0); -- GitLab