68 lines
1.8 KiB
C++
68 lines
1.8 KiB
C++
#include "configuration.h"
|
|
#include "defines.h"
|
|
|
|
#include <stdint.h>
|
|
#include <Wire.h>
|
|
#include "HT_SSD1306Wire.h"
|
|
|
|
#include <WiFi.h>
|
|
#include <WiFiClient.h>
|
|
#include <WiFiAP.h>
|
|
|
|
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;
|
|
}
|
|
|
|
} |