diff --git a/.github/workflows/low_level_tests.yml b/.github/workflows/low_level_tests.yml index 368cacc..ccf5678 100644 --- a/.github/workflows/low_level_tests.yml +++ b/.github/workflows/low_level_tests.yml @@ -14,8 +14,9 @@ jobs: { cc: clang-12, cxx: clang++-12 }, { cc: clang-13, cxx: clang++-13 }, { cc: clang-14, cxx: clang++-14 }, - #{ cc: clang-15, cxx: clang++-15 }, - { cc: clang-16, cxx: clang++-16 } ] + { cc: clang-15, cxx: clang++-15 }, + # { cc: clang-16, cxx: clang++-16 }, + { cc: clang-17, cxx: clang++-17 } ] build: [ Release, Debug ] env: CC: ${{ matrix.compiler.cc }} @@ -31,7 +32,11 @@ jobs: sudo add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy main" sudo add-apt-repository "deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy main" sudo apt-get update - sudo apt-get install -y wget g++-9 g++-10 g++-11 protobuf-compiler valgrind python3-protobuf clang-* + sudo apt-get install -y wget g++-9 g++-10 g++-11 protobuf-compiler valgrind python3-protobuf clang-* scons + - name: Run NanoPB Tests + run: | + cd Src/Messages/External/nanopb/tests/ + scons - name: Set up Build run: cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build }} - name: Build and run tests @@ -43,7 +48,7 @@ jobs: - uses: actions/upload-artifact@v3 with: name: ${{ matrix.compiler.cc }} - path: build/Tests/LowLevel + path: . Report: runs-on: ubuntu-latest @@ -78,12 +83,10 @@ jobs: needs: Run-Tests if: ${{ always() }} steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - uses: actions/download-artifact@v3 with: name: gcc-11 + - run: tree - name: Install dependencies run: | sudo apt-get update @@ -91,7 +94,9 @@ jobs: - name: Set up Build run: cmake -B build - name: Run LCOV - run: lcov --no-external --capture --directory . --output-file coverage.info + run: | + lcov --no-external --capture --directory build -o local.info + lcov -a local.info -o coverage.info - name: Gen HTML run: genhtml coverage.info --output-directory coverage - name: Move HTML diff --git a/.gitmodules b/.gitmodules index 36c4ff6..239114a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,6 +4,3 @@ [submodule "Messages"] path = Src/Messages url = https://github.com/ToolboxPlane/Messages.git -[submodule "Tests/LowLevel/Mock"] - path = Tests/LowLevel/Mock - url = https://github.com/ToolboxPlane/MockTools.git diff --git a/CMakeLists.txt b/CMakeLists.txt index d5281b2..ba386d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,5 +20,5 @@ else () message(STATUS "Not building for AVR") endif () -add_subdirectory(Tests) add_subdirectory(Src) +add_subdirectory(Tests) diff --git a/Src/Drivers/protobuf.c b/Src/Drivers/protobuf.c index 4af81a5..3678db7 100644 --- a/Src/Drivers/protobuf.c +++ b/Src/Drivers/protobuf.c @@ -28,7 +28,7 @@ static void uart_callback(uint8_t data) { } void protobuf_init(void) { - message_decoding_init(&message_decoding_data, FC_SP_ID); + message_decoding_init(&message_decoding_data, FC_SP_ID, ToolboxPlaneMessages_FlightControllerSetpoint_fields); ring_buffer_data = ring_buffer_init(); uart_init(UART_ID, UART_BAUD, NONE, 1, uart_callback); } @@ -43,8 +43,7 @@ bool protobuf_available(void) { bool res = false; uint8_t data = 0; while (ring_buffer_get(&ring_buffer_data, &data)) { - if (message_decoding_decode(&message_decoding_data, data, &ToolboxPlaneMessages_FlightControllerSetpoint_msg, - &setpoint_message)) { + if (message_decoding_decode(&message_decoding_data, data, &setpoint_message)) { res = true; } } diff --git a/Src/HAL b/Src/HAL index 8472324..9c284fc 160000 --- a/Src/HAL +++ b/Src/HAL @@ -1 +1 @@ -Subproject commit 84723244ae261f433f541e668b2f5e838480307d +Subproject commit 9c284fc0a9b33f4f773e1f0cfefa3c1a3382e44b diff --git a/Src/Messages b/Src/Messages index 3f52ae8..dccfb61 160000 --- a/Src/Messages +++ b/Src/Messages @@ -1 +1 @@ -Subproject commit 3f52ae897f52ade0f3ae96b34585f395eaa4bae4 +Subproject commit dccfb61076df3b6fef8af663fc3033c050c1bec9 diff --git a/Src/main.c b/Src/main.c index 6f1938d..3988a19 100644 --- a/Src/main.c +++ b/Src/main.c @@ -2,7 +2,7 @@ * @file main.c * @author Paul Nykiel * @date 12.04.19 - * @brief Main file of the Flightcontroller firmware. + * @brief Main file of the Flight-Controller firmware. */ #include "Application/application.h" diff --git a/Tests/LowLevel/CMakeLists.txt b/Tests/LowLevel/CMakeLists.txt index 31c09c2..d473d1a 100644 --- a/Tests/LowLevel/CMakeLists.txt +++ b/Tests/LowLevel/CMakeLists.txt @@ -1,4 +1,3 @@ -add_subdirectory(Mock) function(make_fc_test) cmake_parse_arguments(MAKE_FC_TEST "" # Options @@ -9,7 +8,7 @@ function(make_fc_test) set(headers) foreach (module ${MAKE_FC_TEST_DEPS}) set(LOCAL_HEADER ${CMAKE_SOURCE_DIR}/Src/${module}.h) - set(SYSTEM_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/Mock/System/${module}.h) + set(SYSTEM_HEADER ${MockLib_SOURCE_DIR}/../System/${module}.h) if (EXISTS ${LOCAL_HEADER}) list(APPEND headers ${LOCAL_HEADER}) elseif (EXISTS ${SYSTEM_HEADER}) @@ -48,9 +47,6 @@ make_fc_test(MODULE Drivers/ppm DEPS HAL/pwm16bit avr/io) make_fc_test(MODULE Drivers/protobuf DEPS HAL/uart Messages/MessageDecoding Messages/MessageEncoding Drivers/ring_buffer) make_fc_test(MODULE Drivers/ring_buffer) make_fc_test(MODULE Drivers/sbus DEPS HAL/uart Drivers/ring_buffer) -make_fc_test(MODULE HAL/pwm16bit DEPS avr/io) -make_fc_test(MODULE HAL/timer8bit DEPS avr/io) -make_fc_test(MODULE HAL/uart DEPS avr/io) target_link_libraries(MessageEncoding.mock PUBLIC ToolboxPlaneMessageDefs) target_link_libraries(MessageDecoding.mock PUBLIC ToolboxPlaneMessageDefs) diff --git a/Tests/LowLevel/Drivers/protobuf.cpp b/Tests/LowLevel/Drivers/protobuf.cpp index 9df8664..2f42252 100644 --- a/Tests/LowLevel/Drivers/protobuf.cpp +++ b/Tests/LowLevel/Drivers/protobuf.cpp @@ -19,7 +19,8 @@ TEST(TEST_NAME, init) { EXPECT_TRUE(uartHandle.functionGotCalled(0, 115200U, NONE, 1, std::ignore)); EXPECT_TRUE(ringBufferHandle.functionGotCalled()); - EXPECT_TRUE(decodeHandle.functionGotCalled(std::ignore, 0x40)); + EXPECT_TRUE(decodeHandle.functionGotCalled( + std::ignore, 0x40, ToolboxPlaneMessages_FlightControllerSetpoint_fields)); } TEST(TEST_NAME, send_fc) { @@ -92,7 +93,7 @@ TEST(TEST_NAME, rx_fill_buffer) { EXPECT_TRUE(ringBufferHandle.functionGotCalled(std::ignore, 54)); } -TEST(TEST_NAME, available_read_buffer) { +TEST(TEST_NAME, available__read_buffer) { auto uartHandle = mock::uart.getHandle(); auto decodeHandle = mock::MessageDecoding.getHandle(); auto ringBufferHandle = mock::ring_buffer.getHandle(); @@ -109,18 +110,14 @@ TEST(TEST_NAME, available_read_buffer) { return count <= 4; }); decodeHandle.overrideFunc([](message_decoding_data_t * /*messageDecodingData*/, - uint8_t /*data*/, const pb_msgdesc_t * /*fields*/, + uint8_t /*data*/, void * /*message*/) -> bool { return false; }); protobuf_available(); - EXPECT_TRUE(decodeHandle.functionGotCalled( - std::ignore, 1, &ToolboxPlaneMessages_FlightControllerSetpoint_msg, std::ignore)); - EXPECT_TRUE(decodeHandle.functionGotCalled( - std::ignore, 2, &ToolboxPlaneMessages_FlightControllerSetpoint_msg, std::ignore)); - EXPECT_TRUE(decodeHandle.functionGotCalled( - std::ignore, 3, &ToolboxPlaneMessages_FlightControllerSetpoint_msg, std::ignore)); - EXPECT_TRUE(decodeHandle.functionGotCalled( - std::ignore, 4, &ToolboxPlaneMessages_FlightControllerSetpoint_msg, std::ignore)); + EXPECT_TRUE(decodeHandle.functionGotCalled(std::ignore, 1, std::ignore)); + EXPECT_TRUE(decodeHandle.functionGotCalled(std::ignore, 2, std::ignore)); + EXPECT_TRUE(decodeHandle.functionGotCalled(std::ignore, 3, std::ignore)); + EXPECT_TRUE(decodeHandle.functionGotCalled(std::ignore, 4, std::ignore)); } TEST(TEST_NAME, receive_pb_no_decode) { @@ -141,7 +138,7 @@ TEST(TEST_NAME, receive_pb_no_decode) { }); decodeHandle.overrideFunc([](message_decoding_data_t * /*messageDecodingData*/, - uint8_t /*data*/, const pb_msgdesc_t * /*fields*/, + uint8_t /*data*/, void * /*message*/) -> bool { return false; }); EXPECT_FALSE(protobuf_available()); @@ -165,7 +162,7 @@ TEST(TEST_NAME, receive_pb_yes_decode) { }); decodeHandle.overrideFunc([](message_decoding_data_t * /*messageDecodingData*/, - uint8_t /*data*/, const pb_msgdesc_t * /*fields*/, + uint8_t /*data*/, void * /*message*/) -> bool { return true; }); EXPECT_TRUE(protobuf_available()); @@ -188,15 +185,14 @@ TEST(TEST_NAME, receive_pb_decode_data) { return count == 1; }); - decodeHandle.overrideFunc([](message_decoding_data_t * /*messageDecodingData*/, - uint8_t /*data*/, const pb_msgdesc_t * /*fields*/, - void *message) -> bool { - auto fcData = static_cast(message); - fcData->motor = 1337; - fcData->pitch = 17; - fcData->roll = 34; - return true; - }); + decodeHandle.overrideFunc( + [](message_decoding_data_t * /*messageDecodingData*/, uint8_t /*data*/, void *message) -> bool { + auto fcData = static_cast(message); + fcData->motor = 1337; + fcData->pitch = 17; + fcData->roll = 34; + return true; + }); EXPECT_TRUE(protobuf_available()); EXPECT_EQ(protobuf_get().motor, 1337); diff --git a/Tests/LowLevel/HAL/pwm16bit.cpp b/Tests/LowLevel/HAL/pwm16bit.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/LowLevel/HAL/timer8bit.cpp b/Tests/LowLevel/HAL/timer8bit.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/LowLevel/HAL/uart.cpp b/Tests/LowLevel/HAL/uart.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Tests/LowLevel/Mock b/Tests/LowLevel/Mock deleted file mode 160000 index 0351958..0000000 --- a/Tests/LowLevel/Mock +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 035195821dbaf42353318c11e041f6739d6bed09 diff --git a/Tests/LowLevel/main.cpp b/Tests/LowLevel/main.cpp deleted file mode 100644 index 7c6d6df..0000000 --- a/Tests/LowLevel/main.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include - -int main(int argc, char **argv) { - feenableexcept(FE_INVALID | FE_OVERFLOW | FE_DIVBYZERO); // Floating point exceptions - - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -}