#include #include #include #define INTERNAL_DISPLAY_DASHBOARD_PAGE 0 #define INTERNAL_DISPLAY_INPUT_PAGE 1 #define INTERNAL_DISPLAY_OUTPUT_PAGE 2 #define INTERNAL_DISPLAY_AC_PAGE 3 // Picture IDs #define PIC_LAN_DISCONNECTED 2 #define PIC_LAN_CONNECTED 3 #define PIC_MQTT_DISCONNECTED 4 #define PIC_MQTT_CONNECTED 5 class InternalDisplay : public ESPMegaDisplay { public: InternalDisplay(HardwareSerial *displayAdapter); void begin(ESPMegaIoT *iot, std::function getRtcTime); void loop(); void bindInputCard(uint8_t card_id); void bindOutputCard(uint8_t card_id); private: uint8_t bindedInputCard; uint8_t bindedOutputCard; void handleInputStateChange(uint8_t pin, bool state); void handlePwmStateChange(uint8_t pin, bool state, uint16_t value); void handlePageChange(uint8_t page); void setOutputBar(uint8_t pin, uint16_t value); void setOutputStateColor(uint8_t pin, bool state); void setInputMarker(uint8_t pin, bool state); void setPWMAdjustmentSlider(uint16_t value); void setPWMAdjustmentPin(uint8_t pin); void setPWMAdjustmentButton(bool state); void saveNetworkConfig(); void saveMQTTConfig(); void updateStatusIcons(bool networkStatus, bool mqttStatus); void updateClock(); void refreshPage(); void refreshPage(uint8_t page); void refreshDashboard(); void refreshInput(); void refreshOutput(); void refreshAC(); // Pointers to various data ESPMegaIoT *iot; std::function getRtcTime; };