Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
This commit is contained in:
233
tools/EVerest-main/lib/everest/ocpp/lib/CMakeLists.txt
Normal file
233
tools/EVerest-main/lib/everest/ocpp/lib/CMakeLists.txt
Normal file
@@ -0,0 +1,233 @@
|
||||
# OCPP library
|
||||
add_library(ocpp)
|
||||
add_library(everest::ocpp ALIAS ocpp)
|
||||
|
||||
target_compile_options(ocpp
|
||||
PRIVATE
|
||||
#-Werror # turn warnings into errors
|
||||
-Wimplicit-fallthrough # avoid unintended fallthroughs
|
||||
-pedantic-errors
|
||||
-Werror=switch-enum
|
||||
)
|
||||
|
||||
target_compile_definitions(ocpp
|
||||
PRIVATE
|
||||
MIGRATION_FILE_VERSION_V16=${MIGRATION_FILE_VERSION_V16}
|
||||
MIGRATION_FILE_VERSION_V2=${MIGRATION_FILE_VERSION_V2}
|
||||
MIGRATION_DEVICE_MODEL_FILE_VERSION_V2=${MIGRATION_DEVICE_MODEL_FILE_VERSION_V2}
|
||||
)
|
||||
|
||||
target_sources(ocpp
|
||||
PRIVATE
|
||||
ocpp/common/call_types.cpp
|
||||
ocpp/common/charging_station_base.cpp
|
||||
ocpp/common/connectivity_manager.cpp
|
||||
ocpp/common/ocpp_logging.cpp
|
||||
ocpp/common/schemas.cpp
|
||||
ocpp/common/types.cpp
|
||||
ocpp/common/utils.cpp
|
||||
ocpp/common/evse_security_impl.cpp
|
||||
ocpp/common/evse_security.cpp
|
||||
ocpp/common/database/database_handler_common.cpp
|
||||
)
|
||||
|
||||
if(LIBOCPP_ENABLE_V16)
|
||||
target_sources(ocpp
|
||||
PRIVATE
|
||||
ocpp/v16/charge_point.cpp
|
||||
ocpp/v16/database_handler.cpp
|
||||
ocpp/v16/charge_point_impl.cpp
|
||||
ocpp/v16/message_dispatcher.cpp
|
||||
ocpp/v16/smart_charging.cpp
|
||||
ocpp/v16/known_keys.cpp
|
||||
ocpp/v16/charge_point_configuration_base.cpp
|
||||
ocpp/v16/charge_point_configuration_devicemodel.cpp
|
||||
ocpp/v16/charge_point_configuration.cpp
|
||||
ocpp/v16/charge_point_state_machine.cpp
|
||||
ocpp/v16/message_queue.cpp
|
||||
ocpp/v16/profile.cpp
|
||||
ocpp/v16/transaction.cpp
|
||||
ocpp/v16/ocpp_enums.cpp
|
||||
ocpp/v16/ocpp_types.cpp
|
||||
ocpp/v16/types.cpp
|
||||
ocpp/v16/utils.cpp
|
||||
ocpp/v2/messages/InstallCertificate.cpp
|
||||
ocpp/v2/messages/CertificateSigned.cpp
|
||||
ocpp/v2/messages/Authorize.cpp
|
||||
ocpp/v2/messages/GetCertificateStatus.cpp
|
||||
ocpp/v2/messages/Get15118EVCertificate.cpp
|
||||
ocpp/v2/messages/DeleteCertificate.cpp
|
||||
ocpp/v2/messages/TriggerMessage.cpp
|
||||
ocpp/v2/ocpp_enums.cpp
|
||||
ocpp/v2/ocpp_types.cpp
|
||||
ocpp/v2/types.cpp
|
||||
ocpp/v2/messages/SignCertificate.cpp
|
||||
ocpp/v2/messages/GetInstalledCertificateIds.cpp
|
||||
)
|
||||
add_subdirectory(ocpp/v16/messages)
|
||||
endif()
|
||||
|
||||
if(LIBOCPP_ENABLE_V2)
|
||||
target_sources(ocpp
|
||||
PRIVATE
|
||||
ocpp/v2/average_meter_values.cpp
|
||||
ocpp/v2/charge_point.cpp
|
||||
ocpp/v2/charge_point_callbacks.cpp
|
||||
ocpp/v2/connector.cpp
|
||||
ocpp/v2/ctrlr_component_variables.cpp
|
||||
ocpp/v2/database_handler.cpp
|
||||
ocpp/v2/device_model.cpp
|
||||
ocpp/v2/device_model_storage_sqlite.cpp
|
||||
ocpp/v2/enums.cpp
|
||||
ocpp/v2/evse.cpp
|
||||
ocpp/v2/evse_manager.cpp
|
||||
ocpp/v2/init_device_model_db.cpp
|
||||
ocpp/v2/notify_report_requests_splitter.cpp
|
||||
ocpp/v2/message_queue.cpp
|
||||
ocpp/v2/ocpp_enums.cpp
|
||||
ocpp/v2/profile.cpp
|
||||
ocpp/v2/ocpp_types.cpp
|
||||
ocpp/v2/ocsp_updater.cpp
|
||||
ocpp/v2/monitoring_updater.cpp
|
||||
ocpp/v2/transaction.cpp
|
||||
ocpp/v2/types.cpp
|
||||
ocpp/v2/utils.cpp
|
||||
ocpp/v2/component_state_manager.cpp
|
||||
ocpp/v2/message_dispatcher.cpp
|
||||
ocpp/v2/functional_blocks/authorization.cpp
|
||||
ocpp/v2/functional_blocks/availability.cpp
|
||||
ocpp/v2/functional_blocks/security.cpp
|
||||
ocpp/v2/functional_blocks/smart_charging.cpp
|
||||
ocpp/v2/functional_blocks/data_transfer.cpp
|
||||
ocpp/v2/functional_blocks/firmware_update.cpp
|
||||
ocpp/v2/functional_blocks/reservation.cpp
|
||||
ocpp/v2/functional_blocks/diagnostics.cpp
|
||||
ocpp/v2/functional_blocks/display_message.cpp
|
||||
ocpp/v2/functional_blocks/meter_values.cpp
|
||||
ocpp/v2/functional_blocks/provisioning.cpp
|
||||
ocpp/v2/functional_blocks/remote_transaction_control.cpp
|
||||
ocpp/v2/functional_blocks/tariff_and_cost.cpp
|
||||
ocpp/v2/functional_blocks/transaction.cpp
|
||||
ocpp/v21/functional_blocks/bidirectional.cpp
|
||||
ocpp/v21/functional_blocks/der_control.cpp
|
||||
)
|
||||
add_subdirectory(ocpp/v2/messages)
|
||||
add_subdirectory(ocpp/v21/messages)
|
||||
|
||||
# Embed the canonical NetworkConfiguration_1 schema as a build-time C++ string so
|
||||
# blob migration can bootstrap a per-slot component without a filesystem dependency.
|
||||
set(OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_SOURCE
|
||||
"${PROJECT_SOURCE_DIR}/config/common/component_config/standardized/NetworkConfiguration_1.json")
|
||||
file(READ "${OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_SOURCE}"
|
||||
OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_JSON)
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
|
||||
"${OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_SOURCE}")
|
||||
set(OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_GENERATED
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/generated/network_configuration_default_schema.cpp")
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/ocpp/v2/network_configuration_default_schema.cpp.in"
|
||||
"${OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_GENERATED}"
|
||||
@ONLY)
|
||||
target_sources(ocpp PRIVATE
|
||||
"${OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_GENERATED}")
|
||||
set(OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_GENERATED
|
||||
"${OCPP_NETWORK_CONFIGURATION_DEFAULT_SCHEMA_GENERATED}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
add_subdirectory(ocpp/common/websocket)
|
||||
|
||||
option(LIBOCPP_USE_BOOST_FILESYSTEM "Usage of boost/filesystem.hpp instead of std::filesystem" OFF)
|
||||
|
||||
target_include_directories(ocpp
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
|
||||
target_include_directories(ocpp
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/3rd_party>
|
||||
)
|
||||
|
||||
#############
|
||||
# Logging configuration
|
||||
#
|
||||
# Set EVEREST_CUSTOM_LOGGING_LIBRARY to use a custom library.
|
||||
# Alternatively set EVEREST_CUSTOM_LOGGING_INCLUDE_PATH to use a custom header file.
|
||||
#
|
||||
# Both options need to make a header file available on path "everest/logging.hpp"
|
||||
#
|
||||
# To use the normal library, don't set any of these options.
|
||||
#
|
||||
#############
|
||||
if (EVEREST_CUSTOM_LOGGING_LIBRARY)
|
||||
if(NOT TARGET ${EVEREST_CUSTOM_LOGGING_LIBRARY})
|
||||
message(FATAL_ERROR "${EVEREST_CUSTOM_LOGGING_LIBRARY} is not a valid library")
|
||||
else()
|
||||
target_link_libraries(ocpp
|
||||
PUBLIC
|
||||
${EVEREST_CUSTOM_LOGGING_LIBRARY}
|
||||
)
|
||||
message(STATUS "Using custom logging library: ${EVEREST_CUSTOM_LOGGING_LIBRARY}")
|
||||
endif()
|
||||
elseif(EVEREST_CUSTOM_LOGGING_INCLUDE_PATH)
|
||||
if (NOT EXISTS "${EVEREST_CUSTOM_LOGGING_INCLUDE_PATH}/everest/logging.hpp")
|
||||
message(FATAL_ERROR "everest/logging.hpp not found in directory ${EVEREST_CUSTOM_LOGGING_INCLUDE_PATH}")
|
||||
else()
|
||||
target_include_directories(ocpp
|
||||
PUBLIC
|
||||
include
|
||||
${EVEREST_CUSTOM_LOGGING_INCLUDE_PATH}
|
||||
)
|
||||
message(STATUS "Using the following logging header: ${EVEREST_CUSTOM_LOGGING_INCLUDE_PATH}/everest/logging.hpp")
|
||||
endif()
|
||||
else()
|
||||
target_link_libraries(ocpp
|
||||
PUBLIC
|
||||
everest::log
|
||||
)
|
||||
message(STATUS "Using the default logging header")
|
||||
endif()
|
||||
|
||||
#############
|
||||
# End logging configuration
|
||||
#############
|
||||
|
||||
target_link_libraries(ocpp
|
||||
PUBLIC
|
||||
everest::timer
|
||||
everest::util
|
||||
nlohmann_json_schema_validator
|
||||
everest::evse_security
|
||||
websockets_shared
|
||||
everest::sqlite
|
||||
PRIVATE
|
||||
OpenSSL::SSL
|
||||
OpenSSL::Crypto
|
||||
SQLite::SQLite3
|
||||
Threads::Threads
|
||||
nlohmann_json::nlohmann_json
|
||||
date::date-tz
|
||||
)
|
||||
|
||||
if(LIBOCPP_USE_BOOST_FILESYSTEM)
|
||||
find_package(Boost REQUIRED COMPONENTS filesystem)
|
||||
target_link_libraries(ocpp
|
||||
PRIVATE
|
||||
Boost::filesystem
|
||||
)
|
||||
target_compile_definitions(ocpp
|
||||
PRIVATE
|
||||
LIBOCPP_USE_BOOST_FILESYSTEM
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(ocpp
|
||||
PUBLIC
|
||||
${ATOMIC_LIBS}
|
||||
)
|
||||
|
||||
# FIXME (aw): right now nlohmann_json and boost::optional don't compile
|
||||
# with gcc 10.x and C++11/14, so we need to publish the
|
||||
# C++17 standard
|
||||
target_compile_features(ocpp PUBLIC cxx_std_17)
|
||||
Reference in New Issue
Block a user