ESPMegaPRO-v3-SDK/Template Project/lib/ESPMegaPRO/ESPMegaDisplay.hpp

53 lines
1.9 KiB
C++

#include <Arduino.h>
#include <ESPMegaPRO_OOP.hpp>
#define FETCH_TIMEOUT 100
class ESPMegaDisplay
{
public:
ESPMegaDisplay(HardwareSerial *displayAdapter, ESPMegaPRO *espmega);
void begin();
void loop();
void reset();
void setBrightness(int value);
void jumpToPage(int page);
void setString(char* component, char* value);
void setNumber(char* component, int value);
char* getString(char* component);
int getNumber(char* component);
void bindInputPage(uint8_t card_id);
void bindOutputPage(uint8_t card_id);
void handlePwmStateChange(uint8_t pin, uint16_t value);
void handleInputStateChange(uint8_t pin, bool state);
void registerPushCallback(std::function<void(uint8_t, uint8_t)> callback);
void registerPopCallback(std::function<void(uint8_t, uint8_t)> callback);
void registerPageChangeCallback(std::function<void(uint8_t)> callback);
void unregisterPushCallback();
void unregisterPopCallback();
void unregisterPageChangeCallback();
private:
uint8_t inputCardId;
uint8_t outputCardId;
uint8_t currentPage;
uint8_t rx_buffer_index;
char rx_buffer[256];
char tx_buffer[256];
bool recieveSerialCommand();
bool recieveSerialCommand(bool process);
void processSerialCommand();
void processTouchPayload();
void processPageReportPayload();
void sendStopBytes();
void sendCommand(char* command);
void refreshPage();
void refreshInputPage();
void refreshOutputPage();
bool payloadIsValid();
bool waitForValidPayload(uint32_t timeout);
HardwareSerial *displayAdapter;
ESPMegaPRO *espmega;
std::function<void(uint8_t, uint8_t)> pushCallback;
std::function<void(uint8_t, uint8_t)> popCallback;
std::function<void(uint8_t)> pageChangeCallback;
};