- 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>
- Introduced new structures and methods for handling device type decoding, including DaliDecodeContext and DeviceTypeDecodeTable.
- Implemented decoding functions for device types DT1, DT4, DT5, DT6, and DT8, with specific command and query handling.
- Updated existing decode methods to incorporate gateway and source parameters for better context tracking.
- Added detailed formatting for device type commands and queries, enhancing the decoding process for various device types.
- Refactored the decode logic to utilize the new context management for maintaining state across different device types.
Signed-off-by: Tony <tonylu@tony-cloud.com>
- Added new bridge operations to the bridgeOperationToString and bridgeOperationFromString functions for better command recognition.
- Implemented a fromCjson function to convert cJSON objects to DaliValue, supporting various data types including arrays and objects.
- Introduced isKnownBridgeRequestKey function to filter out unknown keys in bridge requests.
- Refactored handleDownlink to utilize the new fromCjson function for value and metadata extraction, improving code clarity and maintainability.
- Updated response creation to use a more structured approach with DaliValue's toJson method.
Signed-off-by: Tony <tonylu@tony-cloud.com>
- Introduce DaliDeviceTypeDiscovery struct for managing device type queries.
- Implement discoverDeviceTypes method in DaliBase for improved device type detection.
- Update DaliComm to handle query responses more robustly, including handling multiple device replies.
- Add setDetectedDeviceTypes method in DaliDevice to manage detected device types and capabilities.
- Updated CMakeLists.txt to include new source files for DT4, DT5, and DT6.
- Modified dali.hpp to include headers for DT4, DT5, and DT6.
- Added command definitions for DT4, DT5, and DT6 in dali_define.hpp.
- Enhanced DaliDeviceCapabilities to support DT4, DT5, and DT6 detection.
- Implemented DT4 and DT5 classes with methods for device control and status querying.
- Created DT6 class with methods for device control and status querying.
- Updated decode.cpp to include new device types in the deviceTypeName mapping.
- Enhanced device.cpp to handle new device capabilities.
- Added `bridge.cpp` to handle DALI bridge operations including model management, command execution, and response formatting.
- Introduced `bridge_model.cpp` for defining bridge models, value transformations, and JSON serialization/deserialization.
- Created `bridge_provisioning.cpp` for managing bridge configuration storage and retrieval using NVS on ESP platform.
- Enhanced `gateway_cloud.cpp` to integrate DALI bridge requests and responses with cloud communication.
- Introduced `modbus_bridge.cpp` to handle Modbus-specific operations and register management.
- Implemented utility functions for converting between DaliValue and cJSON formats.
- Added error handling and metadata management in bridge responses.
- Introduced DaliCloudBridge for MQTT communication with backend.
- Added GatewayProvisioningStore for persisting cloud connection settings using NVS.
- Updated CMakeLists.txt to include new source files.
- Enhanced README.md with usage examples and configuration details.