#ifndef LCDDISPLAY_HPP #define LCDDISPLAY_HPP #define LCD_LINES 4 #define LCD_COLS 40 #include #include #include class LCDDisplay { private: int _lcd = -1; std::string _dev; char writebuf[LCD_LINES * LCD_COLS + 8]; // 4x40 chars + 2x4 setcursor commands static constexpr bool dualDisp = (LCD_LINES * LCD_COLS > 80); // is it dual display device or not, evauluated from the size at compile time void writeLines(std::array lines); // do not use // we avoid using these, use buffer (even if these are faster for small writes, perhaps a rewrite is in order) void writeStr(std::string str); void writeStr(uint8_t row, uint8_t col, std::string str); public: LCDDisplay(std::string dev, uint32_t baud = 0010002); // from termios-baud.h, B115200 ~LCDDisplay(); void open(); void close(); void clear(); void setContrast(uint8_t contrast); void setBacklight(bool enabled); void setBacklight(uint8_t brightness); void setCursor(uint8_t row, uint8_t col); void setCustomChar(uint8_t index, std::array cchar); void writeBuf(uint8_t row, uint8_t col, std::string str); void clearBuf(); void flushBuf(); // returns custom char no. c, small enough to define in header constexpr char cc(uint8_t c) { return c % 8; } char bar(uint8_t char_id, double value); }; #endif