From 2ec32d880916f87fc668334ad2978966373231db Mon Sep 17 00:00:00 2001 From: James Chapman <147724513+james-ctc@users.noreply.github.com> Date: Wed, 6 Nov 2024 08:43:59 +0000 Subject: [PATCH] fix: removed duplicate file (#920) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: removed duplicate file Signed-off-by: James Chapman * fix: might fix BAZEL build Signed-off-by: James Chapman * Initial draft for separate util library Signed-off-by: aw * clang-format Signed-off-by: aw * added @hikinggrass comments Signed-off-by: aw * fix bazel Signed-off-by: Dima Dorezyuk * more consistent directory structure Signed-off-by: aw * fix: fixed missing header when building MBED TLS version of V2G Signed-off-by: James Chapman --------- Signed-off-by: James Chapman Signed-off-by: aw Signed-off-by: Dima Dorezyuk Co-authored-by: aw Co-authored-by: Dima Dorezyuk Co-authored-by: Piet Gömpel <37657534+Pietfried@users.noreply.github.com> --- lib/staging/CMakeLists.txt | 5 ++ lib/staging/tls/CMakeLists.txt | 4 +- lib/staging/tls/extensions/tls_types.hpp | 4 +- lib/staging/tls/tests/CMakeLists.txt | 47 +++++++++------- lib/staging/tls/tests/tls_connection_test.hpp | 10 ++-- lib/staging/util/BUILD.bazel | 6 ++ lib/staging/util/CMakeLists.txt | 11 ++++ .../everest/staging/util}/EnumFlags.hpp | 4 +- lib/staging/util/tests/CMakeLists.txt | 12 ++++ .../staging/util}/tests/EnumFlagsTest.cpp | 37 ++++++------ modules/EvseManager/EnumFlags.hpp | 56 ------------------- modules/EvseManager/ErrorHandling.hpp | 1 - modules/EvseManager/tests/CMakeLists.txt | 2 +- modules/EvseV2G/CMakeLists.txt | 3 +- modules/EvseV2G/tests/CMakeLists.txt | 4 +- 15 files changed, 96 insertions(+), 110 deletions(-) create mode 100644 lib/staging/util/BUILD.bazel create mode 100644 lib/staging/util/CMakeLists.txt rename lib/staging/util/{ => include/everest/staging/util}/EnumFlags.hpp (94%) create mode 100644 lib/staging/util/tests/CMakeLists.txt rename {modules/EvseManager => lib/staging/util}/tests/EnumFlagsTest.cpp (65%) delete mode 100644 modules/EvseManager/EnumFlags.hpp diff --git a/lib/staging/CMakeLists.txt b/lib/staging/CMakeLists.txt index 75f6d0c89..7258b449d 100644 --- a/lib/staging/CMakeLists.txt +++ b/lib/staging/CMakeLists.txt @@ -1,14 +1,19 @@ add_subdirectory(can_dpm1000) +add_subdirectory(util) + if(EVEREST_DEPENDENCY_ENABLED_LIBEVSE_SECURITY) add_subdirectory(evse_security) add_subdirectory(tls) endif() + if(EVEREST_DEPENDENCY_ENABLED_LIBSLAC AND EVEREST_DEPENDENCY_ENABLED_LIBFSM) add_subdirectory(slac) endif() + if(EVEREST_DEPENDENCY_ENABLED_EVEREST_GPIO) add_subdirectory(gpio) endif() + if(EVEREST_DEPENDENCY_ENABLED_LIBOCPP) add_subdirectory(ocpp) endif() diff --git a/lib/staging/tls/CMakeLists.txt b/lib/staging/tls/CMakeLists.txt index 50318a13c..17188f8c9 100644 --- a/lib/staging/tls/CMakeLists.txt +++ b/lib/staging/tls/CMakeLists.txt @@ -19,14 +19,16 @@ target_compile_definitions(tls PRIVATE target_include_directories(tls PUBLIC $ - $ ) +# FIXME (aw): check whether all of this needs to be publicly exposed target_link_libraries(tls PUBLIC OpenSSL::SSL OpenSSL::Crypto everest::evse_security + everest::staging::util + PRIVATE everest::framework ) diff --git a/lib/staging/tls/extensions/tls_types.hpp b/lib/staging/tls/extensions/tls_types.hpp index f07f73790..4dc936e33 100644 --- a/lib/staging/tls/extensions/tls_types.hpp +++ b/lib/staging/tls/extensions/tls_types.hpp @@ -6,7 +6,7 @@ #include -#include +#include struct ocsp_response_st; struct ssl_ctx_st; @@ -26,7 +26,7 @@ class StatusFlags { last = trusted_ca_keys, }; - util::AtomicEnumFlags flags; + everest::staging::util::AtomicEnumFlags flags; public: void status_request_received() { diff --git a/lib/staging/tls/tests/CMakeLists.txt b/lib/staging/tls/tests/CMakeLists.txt index 36c2ca2a0..00f69ef81 100644 --- a/lib/staging/tls/tests/CMakeLists.txt +++ b/lib/staging/tls/tests/CMakeLists.txt @@ -24,8 +24,7 @@ add_executable(${TLS_GTEST_NAME}) add_dependencies(${TLS_GTEST_NAME} tls_test_files_target) target_include_directories(${TLS_GTEST_NAME} PRIVATE - . .. ../../util -) + ..) target_compile_definitions(${TLS_GTEST_NAME} PRIVATE -DUNIT_TEST @@ -46,11 +45,13 @@ target_sources(${TLS_GTEST_NAME} PRIVATE ../tls.cpp ) -target_link_libraries(${TLS_GTEST_NAME} PRIVATE - GTest::gtest - OpenSSL::SSL - OpenSSL::Crypto - everest::evse_security +target_link_libraries(${TLS_GTEST_NAME} + PRIVATE + GTest::gtest + OpenSSL::SSL + OpenSSL::Crypto + everest::evse_security + everest::staging::util ) set(TLS_MAIN_NAME tls_server) @@ -58,7 +59,7 @@ add_executable(${TLS_MAIN_NAME}) add_dependencies(${TLS_MAIN_NAME} tls_test_files_target) target_include_directories(${TLS_MAIN_NAME} PRIVATE - . .. ../../util + .. ) target_compile_definitions(${TLS_MAIN_NAME} PRIVATE @@ -74,9 +75,11 @@ target_sources(${TLS_MAIN_NAME} PRIVATE ../tls.cpp ) -target_link_libraries(${TLS_MAIN_NAME} PRIVATE - OpenSSL::SSL - OpenSSL::Crypto +target_link_libraries(${TLS_MAIN_NAME} + PRIVATE + OpenSSL::SSL + OpenSSL::Crypto + everest::staging::util ) set(TLS_CLIENT_NAME tls_client) @@ -84,7 +87,7 @@ add_executable(${TLS_CLIENT_NAME}) add_dependencies(${TLS_CLIENT_NAME} tls_test_files_target) target_include_directories(${TLS_CLIENT_NAME} PRIVATE - . .. ../../util + .. ) target_compile_definitions(${TLS_CLIENT_NAME} PRIVATE @@ -100,9 +103,11 @@ target_sources(${TLS_CLIENT_NAME} PRIVATE ../tls.cpp ) -target_link_libraries(${TLS_CLIENT_NAME} PRIVATE - OpenSSL::SSL - OpenSSL::Crypto +target_link_libraries(${TLS_CLIENT_NAME} + PRIVATE + OpenSSL::SSL + OpenSSL::Crypto + everest::staging::util ) set(TLS_PATCH_NAME patched_test) @@ -110,7 +115,7 @@ add_executable(${TLS_PATCH_NAME}) add_dependencies(${TLS_PATCH_NAME} tls_test_files_target) target_include_directories(${TLS_PATCH_NAME} PRIVATE - . .. ../../util + .. ) target_compile_definitions(${TLS_PATCH_NAME} PRIVATE @@ -126,10 +131,12 @@ target_sources(${TLS_PATCH_NAME} PRIVATE ../tls.cpp ) -target_link_libraries(${TLS_PATCH_NAME} PRIVATE - GTest::gtest_main - OpenSSL::SSL - OpenSSL::Crypto +target_link_libraries(${TLS_PATCH_NAME} + PRIVATE + GTest::gtest_main + OpenSSL::SSL + OpenSSL::Crypto + everest::staging::util ) add_test(${TLS_GTEST_NAME} ${TLS_GTEST_NAME}) diff --git a/lib/staging/tls/tests/tls_connection_test.hpp b/lib/staging/tls/tests/tls_connection_test.hpp index 83416fecd..36689661a 100644 --- a/lib/staging/tls/tests/tls_connection_test.hpp +++ b/lib/staging/tls/tests/tls_connection_test.hpp @@ -7,7 +7,6 @@ #include #include -#include #include #include #include @@ -18,6 +17,8 @@ #include #include +#include + using namespace std::chrono_literals; namespace { @@ -35,10 +36,11 @@ struct ClientStatusRequestV2Test : public ClientStatusRequestV2 { last = connected, }; - util::AtomicEnumFlags& flags; + everest::staging::util::AtomicEnumFlags& flags; ClientStatusRequestV2Test() = delete; - explicit ClientStatusRequestV2Test(util::AtomicEnumFlags& flag_ref) : flags(flag_ref) { + explicit ClientStatusRequestV2Test(everest::staging::util::AtomicEnumFlags& flag_ref) : + flags(flag_ref) { } int status_request_cb(tls::Ssl* ctx) override { @@ -96,7 +98,7 @@ struct ClientStatusRequestV2Test : public ClientStatusRequestV2 { struct ClientTest : public tls::Client { using flags_t = ClientStatusRequestV2Test::flags_t; - util::AtomicEnumFlags flags; + everest::staging::util::AtomicEnumFlags flags; ClientTest() : tls::Client(std::unique_ptr(new ClientStatusRequestV2Test(flags))) { } diff --git a/lib/staging/util/BUILD.bazel b/lib/staging/util/BUILD.bazel new file mode 100644 index 000000000..c235560ca --- /dev/null +++ b/lib/staging/util/BUILD.bazel @@ -0,0 +1,6 @@ +cc_library( + name = "util", + hdrs = ["include/*.hpp"], + visibility = ["//visibility:public"], + includes = ["include"], +) \ No newline at end of file diff --git a/lib/staging/util/CMakeLists.txt b/lib/staging/util/CMakeLists.txt new file mode 100644 index 000000000..9ceb4c91f --- /dev/null +++ b/lib/staging/util/CMakeLists.txt @@ -0,0 +1,11 @@ +add_library(everest_staging_util INTERFACE) +add_library(everest::staging::util ALIAS everest_staging_util) + +target_include_directories(everest_staging_util + INTERFACE + $ +) + +if (BUILD_TESTING) + add_subdirectory(tests) +endif() diff --git a/lib/staging/util/EnumFlags.hpp b/lib/staging/util/include/everest/staging/util/EnumFlags.hpp similarity index 94% rename from lib/staging/util/EnumFlags.hpp rename to lib/staging/util/include/everest/staging/util/EnumFlags.hpp index e4f80788b..14fb72452 100644 --- a/lib/staging/util/EnumFlags.hpp +++ b/lib/staging/util/include/everest/staging/util/EnumFlags.hpp @@ -7,7 +7,7 @@ #include #include -namespace util { +namespace everest::staging::util { template class AtomicEnumFlags { static_assert(std::is_enum(), "Not enum"); @@ -53,5 +53,5 @@ template class AtomicEnumFlags { } }; -} // namespace util +} // namespace everest::staging::util #endif diff --git a/lib/staging/util/tests/CMakeLists.txt b/lib/staging/util/tests/CMakeLists.txt new file mode 100644 index 000000000..97c0e2e06 --- /dev/null +++ b/lib/staging/util/tests/CMakeLists.txt @@ -0,0 +1,12 @@ +add_executable(EnumFlagsTest + EnumFlagsTest.cpp +) + +target_link_libraries(EnumFlagsTest + PRIVATE + GTest::gtest_main + everest::staging::util +) + +include(GoogleTest) +gtest_discover_tests(EnumFlagsTest) diff --git a/modules/EvseManager/tests/EnumFlagsTest.cpp b/lib/staging/util/tests/EnumFlagsTest.cpp similarity index 65% rename from modules/EvseManager/tests/EnumFlagsTest.cpp rename to lib/staging/util/tests/EnumFlagsTest.cpp index d7437842c..6cf07e04d 100644 --- a/modules/EvseManager/tests/EnumFlagsTest.cpp +++ b/lib/staging/util/tests/EnumFlagsTest.cpp @@ -1,17 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // Copyright Pionix GmbH and Contributors to EVerest -#include #include -#include - -namespace { +#include enum class ErrorHandlingFlags : std::uint8_t { prevent_charging, prevent_charging_welded, all_errors_cleared, - last = AllErrorCleared + last = all_errors_cleared }; enum class BspErrors : std::uint8_t { @@ -39,52 +36,52 @@ enum class BspErrors : std::uint8_t { last = VendorError }; +using namespace everest::staging::util; + TEST(AtomicEnumFlagsTest, init) { - module::AtomicEnumFlags flags; + AtomicEnumFlags flags; EXPECT_TRUE(flags.all_reset()); } TEST(AtomicEnumFlagsTest, init_large) { - module::AtomicEnumFlags flags; + AtomicEnumFlags flags; EXPECT_TRUE(flags.all_reset()); } TEST(AtomicEnumFlagsTest, set_reset_one) { - module::AtomicEnumFlags flags; + AtomicEnumFlags flags; EXPECT_TRUE(flags.all_reset()); - flags.set(ErrorHandlingFlags::AllErrorCleared); + flags.set(ErrorHandlingFlags::all_errors_cleared); EXPECT_FALSE(flags.all_reset()); - flags.reset(ErrorHandlingFlags::AllErrorCleared); + flags.reset(ErrorHandlingFlags::all_errors_cleared); EXPECT_TRUE(flags.all_reset()); } TEST(AtomicEnumFlagsTest, set_reset_two) { - module::AtomicEnumFlags flags; + AtomicEnumFlags flags; EXPECT_TRUE(flags.all_reset()); - flags.set(ErrorHandlingFlags::AllErrorCleared); + flags.set(ErrorHandlingFlags::all_errors_cleared); EXPECT_FALSE(flags.all_reset()); - flags.set(ErrorHandlingFlags::PreventCharging); + flags.set(ErrorHandlingFlags::prevent_charging); EXPECT_FALSE(flags.all_reset()); - flags.reset(ErrorHandlingFlags::AllErrorCleared); + flags.reset(ErrorHandlingFlags::all_errors_cleared); EXPECT_FALSE(flags.all_reset()); - flags.reset(ErrorHandlingFlags::PreventCharging); + flags.reset(ErrorHandlingFlags::prevent_charging); EXPECT_TRUE(flags.all_reset()); } TEST(AtomicEnumFlagsTest, set_reset_three) { - module::AtomicEnumFlags flags; + AtomicEnumFlags flags; EXPECT_TRUE(flags.all_reset()); - flags.set(ErrorHandlingFlags::AllErrorCleared); + flags.set(ErrorHandlingFlags::all_errors_cleared); EXPECT_FALSE(flags.all_reset()); - flags.set(ErrorHandlingFlags::PreventCharging); + flags.set(ErrorHandlingFlags::prevent_charging); EXPECT_FALSE(flags.all_reset()); flags.set(ErrorHandlingFlags::prevent_charging_welded); EXPECT_FALSE(flags.all_reset()); flags.reset(); EXPECT_TRUE(flags.all_reset()); } - -} // namespace diff --git a/modules/EvseManager/EnumFlags.hpp b/modules/EvseManager/EnumFlags.hpp deleted file mode 100644 index b2691fb2e..000000000 --- a/modules/EvseManager/EnumFlags.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright Pionix GmbH and Contributors to EVerest -#ifndef ENUMFLAGS_HPP -#define ENUMFLAGS_HPP - -#include -#include -#include - -namespace module { - -template struct AtomicEnumFlags { - static_assert(std::is_enum() == true, "Not enum"); - static_assert(std::is_integral() == true, "Not integer"); - static_assert((sizeof(B) * 8) >= static_cast(T::last) + 1, "Underlying flag type too small"); - std::atomic _value{0ULL}; - - constexpr std::size_t bit(const T& flag) const { - return 1ULL << static_cast>(flag); - } - - constexpr void set(const T& flag, bool value) { - if (value) { - set(flag); - } else { - reset(flag); - } - } - - constexpr void set(const T& flag) { - _value |= bit(flag); - } - - constexpr void reset(const T& flag) { - _value &= ~bit(flag); - } - - constexpr void reset() { - _value = 0ULL; - } - - constexpr bool all_reset() const { - return _value == 0ULL; - } - - constexpr bool is_set(const T& flag) const { - return (_value & bit(flag)) != 0; - } - - constexpr bool is_reset(const T& flag) const { - return (_value & bit(flag)) == 0; - } -}; - -} // namespace module -#endif diff --git a/modules/EvseManager/ErrorHandling.hpp b/modules/EvseManager/ErrorHandling.hpp index 7646bd7f5..8db687eaf 100644 --- a/modules/EvseManager/ErrorHandling.hpp +++ b/modules/EvseManager/ErrorHandling.hpp @@ -32,7 +32,6 @@ #include #include -#include "EnumFlags.hpp" #include "Timeout.hpp" #include "utils/thread.hpp" diff --git a/modules/EvseManager/tests/CMakeLists.txt b/modules/EvseManager/tests/CMakeLists.txt index 33d060038..2bccddf3d 100644 --- a/modules/EvseManager/tests/CMakeLists.txt +++ b/modules/EvseManager/tests/CMakeLists.txt @@ -6,7 +6,7 @@ add_dependencies(${TEST_TARGET_NAME} ${MODULE_NAME}) get_target_property(GENERATED_INCLUDE_DIR generate_cpp_files EVEREST_GENERATED_INCLUDE_DIR) target_include_directories(${TEST_TARGET_NAME} PRIVATE - . .. ../../../tests/include + .. ../../../tests/include ${GENERATED_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/generated/modules/${MODULE_NAME} ) diff --git a/modules/EvseV2G/CMakeLists.txt b/modules/EvseV2G/CMakeLists.txt index 37702aa7a..af18dc458 100644 --- a/modules/EvseV2G/CMakeLists.txt +++ b/modules/EvseV2G/CMakeLists.txt @@ -59,13 +59,14 @@ target_sources(${MODULE_NAME} if(USING_MBED_TLS) # needed for header file enum definition target_include_directories(${MODULE_NAME} PRIVATE - ../../lib/staging/tls ../../lib/staging/util + ../../lib/staging/tls ) target_link_libraries(${MODULE_NAME} PRIVATE mbedcrypto mbedtls mbedx509 + everest::staging::util ) target_sources(${MODULE_NAME} PRIVATE diff --git a/modules/EvseV2G/tests/CMakeLists.txt b/modules/EvseV2G/tests/CMakeLists.txt index 5b5adf32b..82f81f20b 100644 --- a/modules/EvseV2G/tests/CMakeLists.txt +++ b/modules/EvseV2G/tests/CMakeLists.txt @@ -27,7 +27,7 @@ add_dependencies(${TLS_GTEST_NAME} v2g_test_files_target) add_dependencies(${TLS_GTEST_NAME} generate_cpp_files) target_include_directories(${TLS_GTEST_NAME} PRIVATE - . .. ../crypto ../../../lib/staging/util + .. ../crypto ${GENERATED_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/generated/modules/${MODULE_NAME} ) @@ -59,7 +59,7 @@ add_executable(${V2G_MAIN_NAME}) add_dependencies(${V2G_MAIN_NAME} generate_cpp_files) target_include_directories(${V2G_MAIN_NAME} PRIVATE - . .. ../connection ../../../tests/include ../../../lib/staging/util + .. ../connection ../../../tests/include ${GENERATED_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/generated/modules/${MODULE_NAME} ${CMAKE_BINARY_DIR}/generated/include