105 lines
No EOL
3.6 KiB
C++
105 lines
No EOL
3.6 KiB
C++
#include "epd.hpp"
|
|
|
|
int fgColor;
|
|
int bgColor;
|
|
uint8_t qrcode[qrcodegen_BUFFER_LEN_MAX];
|
|
|
|
int getBgColor()
|
|
{
|
|
return bgColor;
|
|
}
|
|
|
|
int getFgColor()
|
|
{
|
|
return fgColor;
|
|
}
|
|
|
|
void setBgColor(int color)
|
|
{
|
|
bgColor = color;
|
|
}
|
|
|
|
void setFgColor(int color)
|
|
{
|
|
fgColor = color;
|
|
}
|
|
|
|
void showSetupQr(const String &ssid, const String &password)
|
|
{
|
|
char displayIndex = 6;
|
|
|
|
const String text = "WIFI:S:" + ssid + ";T:WPA;P:" + password + ";;";
|
|
|
|
uint8_t tempBuffer[qrcodegen_BUFFER_LEN_MAX];
|
|
bool ok = qrcodegen_encodeText(text.c_str(), tempBuffer, qrcode, qrcodegen_Ecc_LOW,
|
|
qrcodegen_VERSION_MIN, qrcodegen_VERSION_MAX, qrcodegen_Mask_AUTO, true);
|
|
|
|
const int size = qrcodegen_getSize(qrcode);
|
|
|
|
const int padding = floor(float(displays[displayIndex].width() - (size * 4)) / 2);
|
|
const int paddingY = floor(float(displays[displayIndex].height() - (size * 4)) / 2);
|
|
|
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
|
const int border = 0;
|
|
|
|
for (int y = -border; y < size * 4 + border; y++)
|
|
{
|
|
for (int x = -border; x < size * 4 + border; x++)
|
|
{
|
|
displays[displayIndex].drawPixel(padding + x, paddingY + y, qrcodegen_getModule(qrcode, floor(float(x) / 4), floor(float(y) / 4)) ? GxEPD_BLACK : GxEPD_WHITE);
|
|
}
|
|
}
|
|
displays[displayIndex].display(true);
|
|
|
|
displayIndex = 4;
|
|
|
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
|
displays[displayIndex].setTextColor(GxEPD_BLACK);
|
|
displays[displayIndex].setCursor(0, 50);
|
|
displays[displayIndex].setFont(&FreeSansBold9pt7b);
|
|
displays[displayIndex].println(F("SSID:"));
|
|
displays[displayIndex].setFont(&FreeSans9pt7b);
|
|
displays[displayIndex].println(ssid);
|
|
displays[displayIndex].println("");
|
|
displays[displayIndex].setFont(&FreeSansBold9pt7b);
|
|
displays[displayIndex].println(F("Password:"));
|
|
displays[displayIndex].setFont(&FreeSans9pt7b);
|
|
displays[displayIndex].println(password);
|
|
displays[displayIndex].display(true);
|
|
|
|
displayIndex = 2;
|
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
|
displays[displayIndex].setTextColor(GxEPD_BLACK);
|
|
displays[displayIndex].setCursor(0, 50);
|
|
displays[displayIndex].setFont(&FreeSans9pt7b);
|
|
displays[displayIndex].println(F("To setup\r\nscan QR or\r\nconnect\r\nmanually"));
|
|
// displays[displayIndex].println(F("scan QR or"));
|
|
// displays[displayIndex].println(F("connect"));
|
|
// displays[displayIndex].println(F("manually"));
|
|
displays[displayIndex].display(true);
|
|
|
|
displayIndex = 0;
|
|
|
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
|
displays[displayIndex].setTextColor(GxEPD_BLACK);
|
|
displays[displayIndex].setCursor(0, 50);
|
|
displays[displayIndex].setFont(&FreeSansBold9pt7b);
|
|
displays[displayIndex].println(F("Welcome!"));
|
|
displays[displayIndex].display(true);
|
|
|
|
for (int i = 1; i < NUM_SCREENS; (i = i + 2))
|
|
{
|
|
displays[i].setPartialWindow(0, 0, displays[i].width(), displays[i].height());
|
|
displays[i].fillScreen(GxEPD_WHITE);
|
|
displays[i].display(true);
|
|
}
|
|
|
|
for (int i = 0; i < NUM_SCREENS; i++)
|
|
{
|
|
displays[i].hibernate();
|
|
}
|
|
} |