#pragma once #include #include "Keyboard.h" class Interface { private: LiquidCrystal_I2C _lcd; Keyboard* _keyboard; String _pin_number; bool _pin_available; int _display_state = 0; unsigned long _lastDisplayUpdate = 0; unsigned long _displayTimer1 = 0; unsigned long _displayTimer2 = 0; unsigned long _inputTimeout = 0; bool _displayUpdate = true; String _username = ""; unsigned int _scroll_index = 0; String _msg1 = ""; String _msg2 = ""; unsigned long _msg_display_time = 0; ; public: enum states { MAIN, ENTER_PIN_START, ENTER_PIN_ADD_NUM, VALIDATE_PIN, ABORT, DELAY, READ_RFID, GREET, MSG }; Interface(/* args */); ~Interface(); void begin(Keyboard* Keyboard); void render(); void setState(states state); int getState(); void greetUser(String username); String getPin(); bool pinAvailable(); void showMessage(String msg1, String msg2, unsigned long display_time); };