- Resolved persistent segmentation faults by correcting memory management and simplifying interactive input logic.
- Eliminated LED flickering by implementing a longer timeout in DNRGB packets and removing unnecessary refresh timers.
- Added an ASCII visualization of the LED layout to the terminal for better user feedback.
- Updated lessons_learned.md with detailed explanations of the problems and their solutions.
- Re-implemented the demo and interactive flashing functionality for the wled_config_tool from scratch based on the detailed specification in lessons_learned.md.
- Added a new WledClient::setLedsColor method to send the entire LED state in a single packet, preventing flickering.
- Fixed multiple build issues, including missing Qt module dependencies, deprecated function calls, and linker errors.
- Updated lessons_learned.md to document the code loss and recovery process, as well as the build fixes.
Outlined a new strategy to create a standalone tool for WLED configuration retrieval and interactive LED testing, addressing previous challenges with programmatic access and LED mapping.
Outlined a new strategy to create a standalone tool for WLED configuration retrieval and interactive LED testing, addressing previous challenges with programmatic access and LED mapping.
Updated lessons_learned.md with the confirmed WLED device details, including the corrected IP address (192.168.178.69), total LED count (181), and UDP port (21324). This resolves previous connectivity issues and allows for accurate configuration.
Documented findings from WLED API research, including JSON API for configuration and UDP Realtime protocol details, highlighting the default port mismatch.
Documented the core principles of Ambilight TV and its relevance to the Hyperion_Grabber_X11_QT project, including potential causes for LED color mismatches.
Addresses flickering issue by increasing _changeThreshold_m in hyperiongrabber.cpp from 100 to 5000. This filters out subtle pixel variations that caused unnecessary frame updates to WLED.
The mock server now correctly implements the newline-delimited JSON protocol observed in the Hyperion server and client code.
- It properly parses incoming JSON streams line-by-line.
- It creates QImage objects from the raw RGB data using the dimensions provided in the JSON payload.
- It sends a success reply to the client after receiving an image.
- This commit also updates lessons_learned.md with key findings from the debugging session.
Refactored HyperionClient to use QJsonObject and QJsonDocument for constructing JSON commands.
This improves code readability, maintainability, and reduces the risk of malformed JSON strings compared to manual string concatenation.
Resolved an issue where the `--address` and `--port` command-line arguments were being ignored due to a hardcoded IP address and an incorrect parsing loop.
This commit ensures that:
- The application correctly uses the address and port provided by the user.
- The application exits gracefully if required arguments are missing.
- The argument parsing logic is simplified and more explicit.
Replaced the complex, low-level OpenGL pipeline in HyperionGrabber with a simple, high-level `QImage::scaled()` call.
This change significantly reduces code complexity and improves maintainability without sacrificing performance, as `QImage::scaled()` is highly optimized and often hardware-accelerated. The new implementation is more robust and easier to understand.
This resolves the following issues:
- Removes fragile, hard-to-debug OpenGL code.
- Eliminates potential bugs related to FBOs, shaders, and texture handling.
- Corrects the image data pipeline to ensure raw pixel data is processed consistently.