/** * @file displayWrapper.h * @author Alexander Klein (alex@kleiax.de) * @brief Contains the LcdWrapper class * @version 0.1 * @date 2023-01-08 * * @copyright Copyright (c) 2023 * */ #ifndef LCD_WRAPPER_H #define LCD_WRAPPER_H #include #include #include #define DISPLAY_WRAPPER_ROWS 16 #define DISPLAY_WRAPPER_LINES 2 /** * @brief A class for the Menu class to print information * * This class inherits the DisplayWrapper class as a interface. * The class takes the information to print from any thread. The * loop function has to be called to print the data. */ class LcdWrapper : public DisplayWrapper { public: /** * @brief Construct a new Lcd Wrapper object * * @param lcd */ LcdWrapper(LiquidCrystal_I2C* lcd); /** * @brief Print the saved data * */ void loop(); /** * @brief Empty the buffer * */ void clear() override; /** * @brief Set point where data to be saved * * @param row * @param line */ void setCursor(uint8_t row, uint8_t line) override; /** * @brief Save the data to be printed * * @param str */ void print(const char *str) override; private: LiquidCrystal_I2C* lcd; char data[DISPLAY_WRAPPER_LINES][DISPLAY_WRAPPER_ROWS]; uint8_t cursorRow = 0; uint8_t cursorLine = 0; bool changed = false; }; #endif // DISPLAY_WRAPPER_H