Skip to content

Commit 313cc4c

Browse files
rlehchris-durand
authored andcommitted
[test] Fix and improve fdcan test on STM32
1 parent bfafcd3 commit 313cc4c

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

test/modm/platform/fdcan/fdcan_test.cpp

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,14 @@
1717
using namespace modm::platform;
1818

1919
void
20-
FdcanTest::setUp()
20+
FdcanTest::testSendReceive()
2121
{
2222
Fdcan1::initialize<Board::SystemClock, 500_kbps, 1_pct>(9, Fdcan1::Mode::TestInternalLoopback);
23-
2423
// receive all extended messages
2524
Fdcan1::setExtendedFilter(0, Fdcan1::FilterConfig::Fifo1,
2625
modm::can::ExtendedIdentifier(0),
2726
modm::can::ExtendedMask(0));
28-
}
2927

30-
void
31-
FdcanTest::testSendReceive()
32-
{
3328
modm::can::Message message{0x12345678, 7};
3429
constexpr std::string_view data = "\xDE\xAD\xBE\xEF\x12\x34\x56";
3530
std::copy(std::begin(data), std::begin(data) + 7, message.data);
@@ -51,6 +46,12 @@ FdcanTest::testSendReceive()
5146
void
5247
FdcanTest::testFilters()
5348
{
49+
Fdcan1::initialize<Board::SystemClock, 500_kbps, 1_pct>(9, Fdcan1::Mode::TestInternalLoopback);
50+
// receive all extended messages
51+
Fdcan1::setExtendedFilter(0, Fdcan1::FilterConfig::Fifo1,
52+
modm::can::ExtendedIdentifier(0),
53+
modm::can::ExtendedMask(0));
54+
5455
Fdcan1::setStandardFilter(27, Fdcan1::FilterConfig::Fifo0,
5556
modm::can::StandardIdentifier(0x108),
5657
modm::can::StandardMask(0x1F8));
@@ -72,10 +73,20 @@ FdcanTest::testFilters()
7273
void
7374
FdcanTest::testBuffers()
7475
{
76+
Fdcan1::initialize<Board::SystemClock, 500_kbps, 1_pct>(9, Fdcan1::Mode::TestInternalLoopback);
77+
// receive all extended messages
78+
Fdcan1::setExtendedFilter(0, Fdcan1::FilterConfig::Fifo1,
79+
modm::can::ExtendedIdentifier(0),
80+
modm::can::ExtendedMask(0));
81+
82+
// send (RxBufferSize + 2) messages, exceeds internal peripheral queue size (3
83+
// msgs) as well as the software queue size, but not both added together. So
84+
// no message should get lost.
85+
const uint_fast16_t numberOfMsgs = Fdcan1::RxBufferSize + 2;
86+
7587
modm::can::Message message{0x4711, 0};
76-
// send 8 messages, exceeds internal peripheral queue size
77-
for (uint_fast8_t i = 0; i <= 8; ++i) {
78-
message.setLength(i);
88+
for (uint_fast16_t i = 0; i <= numberOfMsgs; ++i) {
89+
message.setLength(i % 8);
7990
for (uint_fast8_t dataIndex = 0; dataIndex < i; ++dataIndex) {
8091
message.data[dataIndex] = i;
8192
}
@@ -86,11 +97,11 @@ FdcanTest::testBuffers()
8697

8798
// try to receive same messages
8899
modm::can::Message receivedMessage;
89-
for (uint_fast8_t i = 0; i <= 8; ++i) {
100+
for (uint_fast16_t i = 0; i <= numberOfMsgs; ++i) {
90101
TEST_ASSERT_TRUE(Fdcan1::getMessage(receivedMessage));
91102

92103
TEST_ASSERT_EQUALS(receivedMessage.getIdentifier(), 0x4711u);
93-
TEST_ASSERT_EQUALS(receivedMessage.getLength(), i);
104+
TEST_ASSERT_EQUALS(receivedMessage.getLength(), (i % 8));
94105

95106
for (uint_fast8_t dataIndex = 0; dataIndex < i; ++dataIndex) {
96107
TEST_ASSERT_EQUALS(receivedMessage.data[dataIndex], i);

test/modm/platform/fdcan/fdcan_test.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
class FdcanTest : public unittest::TestSuite
1616
{
1717
public:
18-
void
19-
setUp() override;
20-
2118
void
2219
testSendReceive();
2320

0 commit comments

Comments
 (0)