From 7c7aa95445066be1a530d1d9d97b938a12ace602 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 2 Jul 2021 19:15:27 +0200 Subject: [PATCH] Mock GPIO when building tests Add some conditional statements in gpio.h so that we can mock the GPIO registers when building tests. --- src/hal/gpio.h | 35 +++++++++++++++++++ tests/unit/logic/cut_filament/CMakeLists.txt | 1 + .../unit/logic/eject_filament/CMakeLists.txt | 1 + .../logic/feed_to_bondtech/CMakeLists.txt | 1 + tests/unit/logic/feed_to_finda/CMakeLists.txt | 1 + tests/unit/logic/load_filament/CMakeLists.txt | 1 + tests/unit/logic/tool_change/CMakeLists.txt | 1 + .../unit/logic/unload_filament/CMakeLists.txt | 1 + .../unit/logic/unload_to_finda/CMakeLists.txt | 1 + tests/unit/modules/stubs/stub_gpio.cpp | 14 ++++++++ 10 files changed, 57 insertions(+) create mode 100644 tests/unit/modules/stubs/stub_gpio.cpp diff --git a/src/hal/gpio.h b/src/hal/gpio.h index fc677bf..7aacd3c 100644 --- a/src/hal/gpio.h +++ b/src/hal/gpio.h @@ -1,6 +1,9 @@ #pragma once #include + +#ifdef __AVR__ #include +#endif namespace hal { namespace gpio { @@ -74,6 +77,7 @@ __attribute__((always_inline)) inline void Init(const GPIO_pin portPin, GPIO_Ini } } +#ifdef __AVR__ #define GPIOA ((hal::gpio::GPIO_TypeDef *)&PINA) #define GPIOB ((hal::gpio::GPIO_TypeDef *)&PINB) #define GPIOC ((hal::gpio::GPIO_TypeDef *)&PINC) @@ -82,6 +86,37 @@ __attribute__((always_inline)) inline void Init(const GPIO_pin portPin, GPIO_Ini #define GPIOF ((hal::gpio::GPIO_TypeDef *)&PINF) #define GPIOG ((hal::gpio::GPIO_TypeDef *)&PING) #define GPIOH ((hal::gpio::GPIO_TypeDef *)&PINH) +#define GPIOI ((hal::gpio::GPIO_TypeDef *)&PINI) #define GPIOJ ((hal::gpio::GPIO_TypeDef *)&PINJ) #define GPIOK ((hal::gpio::GPIO_TypeDef *)&PINK) #define GPIOL ((hal::gpio::GPIO_TypeDef *)&PINL) +#else + +// stub entries +extern hal::gpio::GPIO_TypeDef _GPIOA; +extern hal::gpio::GPIO_TypeDef _GPIOB; +extern hal::gpio::GPIO_TypeDef _GPIOC; +extern hal::gpio::GPIO_TypeDef _GPIOD; +extern hal::gpio::GPIO_TypeDef _GPIOE; +extern hal::gpio::GPIO_TypeDef _GPIOF; +extern hal::gpio::GPIO_TypeDef _GPIOG; +extern hal::gpio::GPIO_TypeDef _GPIOH; +extern hal::gpio::GPIO_TypeDef _GPIOI; +extern hal::gpio::GPIO_TypeDef _GPIOJ; +extern hal::gpio::GPIO_TypeDef _GPIOK; +extern hal::gpio::GPIO_TypeDef _GPIOL; + +#define GPIOA (&_GPIOB) +#define GPIOB (&_GPIOB) +#define GPIOC (&_GPIOB) +#define GPIOD (&_GPIOB) +#define GPIOE (&_GPIOB) +#define GPIOF (&_GPIOB) +#define GPIOG (&_GPIOB) +#define GPIOH (&_GPIOB) +#define GPIOI (&_GPIOB) +#define GPIOJ (&_GPIOB) +#define GPIOK (&_GPIOB) +#define GPIOL (&_GPIOB) + +#endif diff --git a/tests/unit/logic/cut_filament/CMakeLists.txt b/tests/unit/logic/cut_filament/CMakeLists.txt index 1b80ffb..afa94d8 100644 --- a/tests/unit/logic/cut_filament/CMakeLists.txt +++ b/tests/unit/logic/cut_filament/CMakeLists.txt @@ -18,6 +18,7 @@ add_executable( ../../modules/stubs/stub_adc.cpp ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp + ../../modules/stubs/stub_gpio.cpp ../../modules/stubs/stub_timebase.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp diff --git a/tests/unit/logic/eject_filament/CMakeLists.txt b/tests/unit/logic/eject_filament/CMakeLists.txt index 860135c..b3be339 100644 --- a/tests/unit/logic/eject_filament/CMakeLists.txt +++ b/tests/unit/logic/eject_filament/CMakeLists.txt @@ -19,6 +19,7 @@ add_executable( ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp ../../modules/stubs/stub_timebase.cpp + ../../modules/stubs/stub_gpio.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp test_eject_filament.cpp diff --git a/tests/unit/logic/feed_to_bondtech/CMakeLists.txt b/tests/unit/logic/feed_to_bondtech/CMakeLists.txt index 89ca67a..d4e0ef4 100644 --- a/tests/unit/logic/feed_to_bondtech/CMakeLists.txt +++ b/tests/unit/logic/feed_to_bondtech/CMakeLists.txt @@ -15,6 +15,7 @@ add_executable( ../../modules/stubs/stub_adc.cpp ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp + ../../modules/stubs/stub_gpio.cpp ../../modules/stubs/stub_timebase.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp diff --git a/tests/unit/logic/feed_to_finda/CMakeLists.txt b/tests/unit/logic/feed_to_finda/CMakeLists.txt index aaae9d1..40c5121 100644 --- a/tests/unit/logic/feed_to_finda/CMakeLists.txt +++ b/tests/unit/logic/feed_to_finda/CMakeLists.txt @@ -15,6 +15,7 @@ add_executable( ../../modules/stubs/stub_adc.cpp ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp + ../../modules/stubs/stub_gpio.cpp ../../modules/stubs/stub_timebase.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp diff --git a/tests/unit/logic/load_filament/CMakeLists.txt b/tests/unit/logic/load_filament/CMakeLists.txt index 1231a9a..5c9c463 100644 --- a/tests/unit/logic/load_filament/CMakeLists.txt +++ b/tests/unit/logic/load_filament/CMakeLists.txt @@ -17,6 +17,7 @@ add_executable( ../../modules/stubs/stub_adc.cpp ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp + ../../modules/stubs/stub_gpio.cpp ../../modules/stubs/stub_timebase.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp diff --git a/tests/unit/logic/tool_change/CMakeLists.txt b/tests/unit/logic/tool_change/CMakeLists.txt index 8dbca03..aa3061a 100644 --- a/tests/unit/logic/tool_change/CMakeLists.txt +++ b/tests/unit/logic/tool_change/CMakeLists.txt @@ -20,6 +20,7 @@ add_executable( ../../modules/stubs/stub_adc.cpp ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp + ../../modules/stubs/stub_gpio.cpp ../../modules/stubs/stub_timebase.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp diff --git a/tests/unit/logic/unload_filament/CMakeLists.txt b/tests/unit/logic/unload_filament/CMakeLists.txt index 0487cc2..15d32eb 100644 --- a/tests/unit/logic/unload_filament/CMakeLists.txt +++ b/tests/unit/logic/unload_filament/CMakeLists.txt @@ -17,6 +17,7 @@ add_executable( ../../modules/stubs/stub_adc.cpp ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp + ../../modules/stubs/stub_gpio.cpp ../../modules/stubs/stub_timebase.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp diff --git a/tests/unit/logic/unload_to_finda/CMakeLists.txt b/tests/unit/logic/unload_to_finda/CMakeLists.txt index 25f43a1..e1beb97 100644 --- a/tests/unit/logic/unload_to_finda/CMakeLists.txt +++ b/tests/unit/logic/unload_to_finda/CMakeLists.txt @@ -15,6 +15,7 @@ add_executable( ../../modules/stubs/stub_adc.cpp ../../modules/stubs/stub_eeprom.cpp ../../modules/stubs/stub_shr16.cpp + ../../modules/stubs/stub_gpio.cpp ../../modules/stubs/stub_timebase.cpp ../stubs/main_loop_stub.cpp ../stubs/stub_motion.cpp diff --git a/tests/unit/modules/stubs/stub_gpio.cpp b/tests/unit/modules/stubs/stub_gpio.cpp new file mode 100644 index 0000000..2c4b49b --- /dev/null +++ b/tests/unit/modules/stubs/stub_gpio.cpp @@ -0,0 +1,14 @@ +#include "gpio.h" + +hal::gpio::GPIO_TypeDef _GPIOA; +hal::gpio::GPIO_TypeDef _GPIOB; +hal::gpio::GPIO_TypeDef _GPIOC; +hal::gpio::GPIO_TypeDef _GPIOD; +hal::gpio::GPIO_TypeDef _GPIOE; +hal::gpio::GPIO_TypeDef _GPIOF; +hal::gpio::GPIO_TypeDef _GPIOG; +hal::gpio::GPIO_TypeDef _GPIOH; +hal::gpio::GPIO_TypeDef _GPIOI; +hal::gpio::GPIO_TypeDef _GPIOJ; +hal::gpio::GPIO_TypeDef _GPIOK; +hal::gpio::GPIO_TypeDef _GPIOL;