#include "configuration.h" #include "defines.h" #include #include #include "HT_SSD1306Wire.h" #include #include #include SSD1306Wire confDisplay(0x3c, 500000, SDA_OLED, SCL_OLED, GEOMETRY_128_64, RST_OLED);; // addr , freq , i2c group , resolution , rst const char *ssid = "ModbusLoraConf"; char password[12]; static void displayStatus(uint8_t numOfStations) { confDisplay.clear(); confDisplay.display(); confDisplay.drawString(1, 0, "Config Mode running"); char buf[64]; memset(buf, 0, sizeof(buf)); sprintf(buf, "SSID: %s", ssid); confDisplay.drawString(1, 12, buf); memset(buf, 0, sizeof(buf)); sprintf(buf, "Key: %s", password); confDisplay.drawString(1, 24, buf); confDisplay.display(); memset(buf, 0, sizeof(buf)); sprintf(buf, "Num of stations: %d", numOfStations); confDisplay.drawString(1, 36, buf); confDisplay.display(); } static void displayInit() { digitalWrite(Vext,LOW); confDisplay.init(); confDisplay.setFont(ArialMT_Plain_10); confDisplay.setTextAlignment(TEXT_ALIGN_LEFT); confDisplay.screenRotate(ANGLE_180_DEGREE); confDisplay.clear(); confDisplay.drawString(1, 0, "Config Mode starting"); confDisplay.display(); } void configurationSetup() { memset(password, 0, sizeof(password)); for (int i = 0; i < sizeof(password) - 1; i++) { password[i] = random(65, 90); } WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); displayInit(); displayStatus(0); } void configurationLoop() { static uint8_t numOfStations = 255; uint8_t currentNumOfStations = WiFi.softAPgetStationNum(); if (numOfStations != currentNumOfStations) { displayStatus(currentNumOfStations); numOfStations = currentNumOfStations; } }