From 963f8c8d0978d72750763a2e6097add5637dc1ef Mon Sep 17 00:00:00 2001 From: Benjamin Roussilhe Date: Wed, 19 May 2021 17:43:55 +0200 Subject: [PATCH 1/3] :clown_face: (stubs): Add stub for mbed::BufferedSerial --- tests/unit/mbed-os/CMakeLists.txt | 7 +- .../mbed-os/stubs/stub_BufferedSerial.cpp | 66 +++++++++++++++++++ .../unit/mbed-os/stubs/stub_BufferedSerial.h | 9 +++ 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 tests/unit/mbed-os/stubs/stub_BufferedSerial.cpp create mode 100644 tests/unit/mbed-os/stubs/stub_BufferedSerial.h diff --git a/tests/unit/mbed-os/CMakeLists.txt b/tests/unit/mbed-os/CMakeLists.txt index 00730ee1db..f9fc94ca20 100644 --- a/tests/unit/mbed-os/CMakeLists.txt +++ b/tests/unit/mbed-os/CMakeLists.txt @@ -85,6 +85,7 @@ target_sources(mbed-os ${MBED_STUBS_DIR}/stub_gpio_api.cpp ${MBED_STUBS_DIR}/stub_AnalogIn.cpp ${MBED_STUBS_DIR}/stub_PwmOut.cpp + ${MBED_STUBS_DIR}/stub_BufferedSerial.cpp ${MBED_STUBS_DIR}/stub_I2C.cpp ${MBED_STUBS_DIR}/stub_Kernel.cpp ${MBED_STUBS_DIR}/stub_mbed_critical.cpp @@ -92,13 +93,15 @@ target_sources(mbed-os ${MBED_STUBS_DIR}/stub_extension_EventQueue.cpp ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/equeue_stub.c - ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/EventQueue_stub.cpp - ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/mbed_assert_stub.cpp ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/mbed_rtos_rtx_stub.c ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/Mutex_stub.cpp ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/rtx_mutex_stub.c ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/ThisThread_stub.cpp ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/Thread_stub.cpp + ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/mbed_assert_stub.cpp + ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/EventQueue_stub.cpp + ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/SerialBase_stub.cpp + ${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/FileHandle_stub.cpp ) target_compile_options(mbed-os diff --git a/tests/unit/mbed-os/stubs/stub_BufferedSerial.cpp b/tests/unit/mbed-os/stubs/stub_BufferedSerial.cpp new file mode 100644 index 0000000000..a49a80b361 --- /dev/null +++ b/tests/unit/mbed-os/stubs/stub_BufferedSerial.cpp @@ -0,0 +1,66 @@ +// Leka - LekaOS +// Copyright 2021 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +#include "stub_BufferedSerial.h" + +namespace mbed { + +BufferedSerial::BufferedSerial(PinName tx, PinName rx, int baud) : SerialBase(tx, rx, baud) +{ + return; +} + +BufferedSerial::~BufferedSerial() +{ + return; +} + +auto BufferedSerial::poll(short events) const -> short +{ + return 0; +} + +auto BufferedSerial::write(const void *buffer, size_t length) -> ssize_t +{ + return length; +} + +auto BufferedSerial::read(void *buffer, size_t length) -> ssize_t +{ + return length; +} + +auto BufferedSerial::close() -> int +{ + return 0; +} + +auto BufferedSerial::isatty() -> int +{ + return 0; +} + +auto BufferedSerial::seek(off_t offset, int whence) -> off_t +{ + return 0; +} + +auto BufferedSerial::sync() -> int +{ + return 0; +} + +auto BufferedSerial::enable_input(bool enabled) -> int +{ + return 0; +} + +auto BufferedSerial::enable_output(bool enabled) -> int +{ + return 0; +} + +void BufferedSerial::sigio(Callback func) {} + +} // namespace mbed diff --git a/tests/unit/mbed-os/stubs/stub_BufferedSerial.h b/tests/unit/mbed-os/stubs/stub_BufferedSerial.h new file mode 100644 index 0000000000..14dcb2dce6 --- /dev/null +++ b/tests/unit/mbed-os/stubs/stub_BufferedSerial.h @@ -0,0 +1,9 @@ +// Leka - LekaOS +// Copyright 2021 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +#include "drivers/BufferedSerial.h" + +namespace leka { + +} // namespace leka From 13f5c34f94e021b3babb26eb9bd39ac7075cd3fd Mon Sep 17 00:00:00 2001 From: Benjamin Roussilhe Date: Tue, 4 May 2021 12:37:37 +0200 Subject: [PATCH 2/3] :sparkles: (drivers): Add CoreBufferedSerial driver --- drivers/CMakeLists.txt | 5 ++- drivers/CoreBufferedSerial/CMakeLists.txt | 27 +++++++++++++ .../include/CoreBufferedSerial.h | 39 +++++++++++++++++++ .../source/CoreBufferedSerial.cpp | 21 ++++++++++ .../tests/CoreBufferedSerial_test.cpp | 17 ++++++++ tests/unit/CMakeLists.txt | 2 +- 6 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 drivers/CoreBufferedSerial/CMakeLists.txt create mode 100644 drivers/CoreBufferedSerial/include/CoreBufferedSerial.h create mode 100644 drivers/CoreBufferedSerial/source/CoreBufferedSerial.cpp create mode 100644 drivers/CoreBufferedSerial/tests/CoreBufferedSerial_test.cpp diff --git a/drivers/CMakeLists.txt b/drivers/CMakeLists.txt index 0dbfd3790a..bed2ba12ee 100644 --- a/drivers/CMakeLists.txt +++ b/drivers/CMakeLists.txt @@ -3,10 +3,11 @@ # SPDX-License-Identifier: Apache-2.0 # C++ wrappers & low level drivers -add_subdirectory(${DRIVERS_DIR}/LKCoreLL) add_subdirectory(${DRIVERS_DIR}/CoreI2C) +add_subdirectory(${DRIVERS_DIR}/LKCoreLL) add_subdirectory(${DRIVERS_DIR}/LKCoreFatFs) add_subdirectory(${DRIVERS_DIR}/LKCoreSTM32Hal) +add_subdirectory(${DRIVERS_DIR}/CoreBufferedSerial) # LCD drivers add_subdirectory(${DRIVERS_DIR}/LKCoreVideo) @@ -18,5 +19,5 @@ add_subdirectory(${DRIVERS_DIR}/LKCoreMicrophone) add_subdirectory(${DRIVERS_DIR}/LKCoreLightSensor) # Actuators drivers -add_subdirectory(${DRIVERS_DIR}/LKCoreMotor) add_subdirectory(${DRIVERS_DIR}/FastLED) +add_subdirectory(${DRIVERS_DIR}/LKCoreMotor) diff --git a/drivers/CoreBufferedSerial/CMakeLists.txt b/drivers/CoreBufferedSerial/CMakeLists.txt new file mode 100644 index 0000000000..82d3f40f12 --- /dev/null +++ b/drivers/CoreBufferedSerial/CMakeLists.txt @@ -0,0 +1,27 @@ +# Leka - LekaOS +# Copyright 2021 APF France handicap +# SPDX-License-Identifier: Apache-2.0 + +add_library(CoreBufferedSerial STATIC) + +target_include_directories(CoreBufferedSerial + PUBLIC + include +) + +target_sources(CoreBufferedSerial + PRIVATE + source/CoreBufferedSerial.cpp +) + +target_link_libraries(CoreBufferedSerial + mbed-os +) + +if (${CMAKE_PROJECT_NAME} STREQUAL "LekaOSUnitTests") + + leka_unit_tests_sources( + tests/CoreBufferedSerial_test.cpp + ) + +endif() diff --git a/drivers/CoreBufferedSerial/include/CoreBufferedSerial.h b/drivers/CoreBufferedSerial/include/CoreBufferedSerial.h new file mode 100644 index 0000000000..4fd769e31a --- /dev/null +++ b/drivers/CoreBufferedSerial/include/CoreBufferedSerial.h @@ -0,0 +1,39 @@ +// Leka - LekaOS +// Copyright 2021 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +#ifndef _LEKA_OS_DRIVER_CORE_BUFFERED_SERIAL_H_ +#define _LEKA_OS_DRIVER_CORE_BUFFERED_SERIAL_H_ + +#include "drivers/BufferedSerial.h" + +namespace leka::interface { + +class BufferedSerial +{ + public: + virtual ~BufferedSerial() = default; + + virtual auto read(uint8_t *buffer, ssize_t length) -> ssize_t = 0; + virtual auto write(const uint8_t *buffer, ssize_t length) -> ssize_t = 0; +}; + +} // namespace leka::interface + +namespace leka { + +class CoreBufferedSerial : public interface::BufferedSerial +{ + public: + explicit CoreBufferedSerial(mbed::BufferedSerial &serial) : _serial {serial} {}; + + auto read(uint8_t *buffer, ssize_t length) -> ssize_t final; + auto write(const uint8_t *buffer, ssize_t length) -> ssize_t final; + + private: + mbed::BufferedSerial &_serial; +}; + +} // namespace leka + +#endif //_LEKA_OS_DRIVER_CORE_BUFFERED_SERIAL_H_ diff --git a/drivers/CoreBufferedSerial/source/CoreBufferedSerial.cpp b/drivers/CoreBufferedSerial/source/CoreBufferedSerial.cpp new file mode 100644 index 0000000000..0fa8b378ba --- /dev/null +++ b/drivers/CoreBufferedSerial/source/CoreBufferedSerial.cpp @@ -0,0 +1,21 @@ +// Leka - LekaOS +// Copyright 2021 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +// ? LCOV_EXCL_START - Exclude from coverage report + +#include "CoreBufferedSerial.h" + +using namespace leka; + +auto CoreBufferedSerial::read(uint8_t *buffer, ssize_t length) -> ssize_t +{ + return _serial.read(buffer, length); +} + +auto CoreBufferedSerial::write(const uint8_t *buffer, ssize_t length) -> ssize_t +{ + return _serial.write(buffer, length); +} + +// ? LCOV_EXCL_STOP - Exclude from coverage report diff --git a/drivers/CoreBufferedSerial/tests/CoreBufferedSerial_test.cpp b/drivers/CoreBufferedSerial/tests/CoreBufferedSerial_test.cpp new file mode 100644 index 0000000000..7878fa6d3d --- /dev/null +++ b/drivers/CoreBufferedSerial/tests/CoreBufferedSerial_test.cpp @@ -0,0 +1,17 @@ +// Leka - LekaOS +// Copyright 2021 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +#include "CoreBufferedSerial.h" + +#include "gtest/gtest.h" + +using namespace leka; + +TEST(CoreBufferedSerialTest, initialization) +{ + auto serial = mbed::BufferedSerial {RFID_UART_TX, RFID_UART_RX, 57600}; + auto coreserial = CoreBufferedSerial {serial}; + + ASSERT_NE(&coreserial, nullptr); +} diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index 49041661eb..fd251c3502 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -175,7 +175,7 @@ leka_register_unit_tests_for_driver(LKCoreMicrophone) leka_register_unit_tests_for_driver(LKCoreBattery) leka_register_unit_tests_for_driver(CoreHTS) leka_register_unit_tests_for_driver(CoreI2C) - +leka_register_unit_tests_for_driver(CoreBufferedSerial) # Register libraries leka_register_unit_tests_for_library(LKAnimationKit) From 99dd7af79f57447b0b415bdf46a94069827e1088 Mon Sep 17 00:00:00 2001 From: Benjamin Roussilhe Date: Wed, 19 May 2021 17:44:10 +0200 Subject: [PATCH 3/3] :clown_face: (mocks): Add mock for leka::BufferedSerial --- tests/unit/mocks/mock_CoreBufferedSerial.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/unit/mocks/mock_CoreBufferedSerial.h diff --git a/tests/unit/mocks/mock_CoreBufferedSerial.h b/tests/unit/mocks/mock_CoreBufferedSerial.h new file mode 100644 index 0000000000..b6546cd8bd --- /dev/null +++ b/tests/unit/mocks/mock_CoreBufferedSerial.h @@ -0,0 +1,22 @@ +// Leka - LekaOS +// Copyright 2021 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +#ifndef _LEKA_OS_BUFFERED_SERIAL_MOCK_H_ +#define _LEKA_OS_BUFFERED_SERIAL_MOCK_H_ + +#include "CoreBufferedSerial.h" +#include "gmock/gmock.h" + +namespace leka { + +class CoreBufferedSerialMock : public interface::BufferedSerial +{ + public: + MOCK_METHOD(ssize_t, read, (uint8_t *, ssize_t), (override)); + MOCK_METHOD(ssize_t, write, (const uint8_t *, ssize_t), (override)); +}; + +} // namespace leka + +#endif // _LEKA_OS_BUFFERED_SERIAL_MOCK_H_