Files
dali_cpp/CMakeLists.txt
T
Tony c5a079e779 Implement DALI Gateway Cache with State Management and Reconciliation
- Added DaliGatewayCache class for managing DALI device states, including address states, presence, and group statuses.
- Implemented methods for configuring cache, enabling/disabling features, and setting status update callbacks.
- Introduced state encoding/decoding for persistence and added support for CSV parsing.
- Created mutation handling for runtime status updates, group masks, scene levels, and settings.
- Developed reconciliation logic to handle incoming frames and classify mutations.
- Added tests to validate cache functionality, persistence, and DALI protocol handling.

Signed-off-by: Tony <tonylu@tony-cloud.com>
2026-08-01 01:52:12 +08:00

61 lines
2.0 KiB
CMake

if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND "$ENV{IDF_PATH}" STREQUAL "")
cmake_minimum_required(VERSION 3.16)
project(dali_cpp_gateway LANGUAGES CXX)
endif()
set(DALI_CPP_GATEWAY_SOURCES
"src/dali_protocol.cpp"
"src/dali_gateway_cache.cpp"
"src/dali_gateway_cache_mutation.cpp"
"src/dali_gateway_reconciliation.cpp"
"src/dali_application_controller.cpp"
)
if(COMMAND idf_component_register)
idf_component_register(
SRCS
"src/dali_comm.cpp"
${DALI_CPP_GATEWAY_SOURCES}
"src/base.cpp"
"src/addr.cpp"
"src/bridge.cpp"
"src/bridge_model.cpp"
"src/bridge_provisioning.cpp"
"src/decode.cpp"
"src/decode_device_type.cpp"
"src/decode_dt1.cpp"
"src/decode_dt4.cpp"
"src/decode_dt5.cpp"
"src/decode_dt6.cpp"
"src/decode_dt8.cpp"
"src/device.cpp"
"src/dt1.cpp"
"src/dt4.cpp"
"src/dt5.cpp"
"src/dt6.cpp"
"src/dt8.cpp"
"src/sequence.cpp"
"src/sequence_store.cpp"
"src/color.cpp"
"src/gateway_cloud.cpp"
"src/gateway_provisioning.cpp"
INCLUDE_DIRS "include"
REQUIRES mqtt cjson nvs_flash esp_driver_uart
)
set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17)
else()
# Standalone target for IoT adapters that only need the platform-neutral
# DALI gateway application behavior.
add_library(dali_cpp_gateway STATIC ${DALI_CPP_GATEWAY_SOURCES})
target_include_directories(dali_cpp_gateway PUBLIC "${CMAKE_CURRENT_LIST_DIR}/include")
target_compile_features(dali_cpp_gateway PUBLIC cxx_std_17)
include(CTest)
if(BUILD_TESTING)
add_executable(dali_cpp_gateway_test "tests/dali_gateway_test.cpp")
target_link_libraries(dali_cpp_gateway_test PRIVATE dali_cpp_gateway)
add_test(NAME dali_cpp_gateway_test COMMAND dali_cpp_gateway_test)
endif()
endif()