diff --git a/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp b/src/shared/drivers/canbus/CanProtocol/CanProtocol.cpp index c2714aedf1c103ccf7343572468b60ad4a1fbc99..a58beed636eede8a6ca3be391db3033ccb0dd14d 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 3df511ecd13d5e11a4387707a5cd0ec1c779a70a..0f437a53d53025922eaa34ec4de3224736d7c17a 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 686ebd1840495e3dce8eceb98c6c509ec4fac0fe..799338d4d17b720ec047d4ad65f7221f34c9bf32 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);