Skip to content

LcdMenu 4.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 19 Aug 00:43
· 495 commits to master since this release

This release introduces a major refactor of the display management system, aimed at making it more modular and flexible. The key change is the introduction of a display interface abstraction that decouples the display logic from the specific hardware, allowing for easier integration of different display types.

What's Changed

  • Display Interface Abstraction:
    • A new DisplayInterface class has been introduced to define a common interface for all display types.
    • This interface allows developers to easily swap out display implementations (e.g., LCD, OLED) without modifying the core logic.
  • Implemented LiquidCrystalI2CAdapter to support LiquidCrystal_I2C displays.
  • Implemented LiquidCrystalAdapter to support LiquidCrystal displays.
  • Improved Modularity and Flexibility:
    • By decoupling the display management logic from the specific hardware, the system is now more modular and easier to extend with new display types.
    • The menu and cursor handling logic has been adapted to work seamlessly with the new interface, ensuring backward compatibility while providing enhanced flexibility.
  • Debug mode is now turned off by default

Bug Fixes and Improvements

  • Memory Management: Optimized the handling of dynamic memory allocation to prevent memory leaks and improve stability.
  • Code Cleanup: Refactored the codebase for better readability and maintainability. Deprecated functions and variables have been removed or replaced with more efficient alternatives.
  • Documentation: Updated and expanded the documentation to reflect the new architecture and features.

Breaking Changes

  • API Changes: The introduction of the DisplayInterface class and its implementation may require changes to existing projects. Users must update their code to work with the new interface and adapters.
  • Some methods and features directly tied to the LiquidCrystal_I2C library have been refactored or removed. Please review the migration guide for details on how to update your code.

Full Changelog: 3.5.6...4.0.0