From ce565323fd62edb1e3d4dc4fac51102cfb6534db Mon Sep 17 00:00:00 2001 From: Igor Biletskyy Date: Mon, 29 Nov 2021 15:34:33 -0800 Subject: [PATCH] boardd: split usbprotocol unittest and fix paren order in data length assert (#23065) old-commit-hash: 65ca9be82a18115a5dd0556c4b1f8cd9705743d9 --- selfdrive/boardd/panda.cc | 2 +- .../boardd/tests/test_boardd_usbprotocol.cc | 25 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/selfdrive/boardd/panda.cc b/selfdrive/boardd/panda.cc index efe8555999..78e32716cf 100644 --- a/selfdrive/boardd/panda.cc +++ b/selfdrive/boardd/panda.cc @@ -384,7 +384,7 @@ void Panda::pack_can_buffer(const capnp::List::Reader &can_data } auto can_data = cmsg.getDat(); uint8_t data_len_code = len_to_dlc(can_data.size()); - assert(can_data.size() <= (hw_type == cereal::PandaState::PandaType::RED_PANDA) ? 64 : 8); + assert(can_data.size() <= ((hw_type == cereal::PandaState::PandaType::RED_PANDA) ? 64 : 8)); assert(can_data.size() == dlc_to_len[data_len_code]); can_header header; diff --git a/selfdrive/boardd/tests/test_boardd_usbprotocol.cc b/selfdrive/boardd/tests/test_boardd_usbprotocol.cc index 58cea3c681..f1fd2ef902 100644 --- a/selfdrive/boardd/tests/test_boardd_usbprotocol.cc +++ b/selfdrive/boardd/tests/test_boardd_usbprotocol.cc @@ -16,7 +16,7 @@ int random_int(int min, int max) { } struct PandaTest : public Panda { - PandaTest(uint32_t bus_offset, int can_list_size); + PandaTest(uint32_t bus_offset, int can_list_size, cereal::PandaState::PandaType hw_type); void test_can_send(); void test_can_recv(); @@ -27,9 +27,11 @@ struct PandaTest : public Panda { capnp::List::Reader can_data_list; }; -PandaTest::PandaTest(uint32_t bus_offset_, int can_list_size) : can_list_size(can_list_size), Panda(bus_offset_) { +PandaTest::PandaTest(uint32_t bus_offset_, int can_list_size, cereal::PandaState::PandaType hw_type) : can_list_size(can_list_size), Panda(bus_offset_) { + this->hw_type = hw_type; + int data_limit = ((hw_type == cereal::PandaState::PandaType::RED_PANDA) ? std::size(dlc_to_len) : 8); // prepare test data - for (int i = 0; i < std::size(dlc_to_len); ++i) { + for (int i = 0; i < data_limit; ++i) { std::random_device rd; std::independent_bits_engine rbe(rd()); @@ -101,10 +103,23 @@ void PandaTest::test_can_recv() { } } -TEST_CASE("send/recv can packets") { +TEST_CASE("send/recv CAN 2.0 packets") { auto bus_offset = GENERATE(0, 4); auto can_list_size = GENERATE(1, 3, 5, 10, 30, 60, 100, 200); - PandaTest test(bus_offset, can_list_size); + PandaTest test(bus_offset, can_list_size, cereal::PandaState::PandaType::DOS); + + SECTION("can_send") { + test.test_can_send(); + } + SECTION("can_receive") { + test.test_can_recv(); + } +} + +TEST_CASE("send/recv CAN FD packets") { + auto bus_offset = GENERATE(0, 4); + auto can_list_size = GENERATE(1, 3, 5, 10, 30, 60, 100, 200); + PandaTest test(bus_offset, can_list_size, cereal::PandaState::PandaType::RED_PANDA); SECTION("can_send") { test.test_can_send();