Firmware WIP

This commit is contained in:
Marcus 2024-04-13 15:46:40 +02:00
parent 56d988153d
commit b7eb2a4398

View file

@ -47,9 +47,7 @@ bool WIPE;
/* /*
* EEPROM variables * EEPROM variables
*/ */
// Size of EEPROM
//const uint8_t EEPROMsize = 512;
bool configured; bool configured;
char WIFIssid[32]; char WIFIssid[32];
char WIFIpassword[64]; char WIFIpassword[64];
@ -345,50 +343,78 @@ void wipeEEPROM() {
// write a 0 to all 512 bytes of the EEPROM // write a 0 to all 512 bytes of the EEPROM
Serial.print("wiping EEPROM... "); Serial.print("wiping EEPROM... ");
for (int i = 0; i < 512; i++) { EEPROM.write(i, 0); } for (int i = 0; i < 512; i++) { EEPROM.write(i, 0); }
EEPROM.commit();
// commit everything to EEPROM and end here
EEPROM.end();
Serial.println("DONE"); Serial.println("DONE");
// set D4 PIN_WIPE internal LED to Output to give feedback WIPE
// was done
pinMode(PIN_WIPE, OUTPUT); pinMode(PIN_WIPE, OUTPUT);
digitalWrite(PIN_WIPE, LOW);
Serial.println("Please restart the device."); Serial.println("!! Device will restart in 5 seconds !!");
delay(5000);
byte i = 0;
while( i <= 10 ) {
if( i % 2 ) {
digitalWrite(PIN_WIPE, LOW);
} else {
digitalWrite(PIN_WIPE, HIGH);
}
delay(500);
i++;
}
ESP.restart();
} }
bool loadEEPROM() { bool loadEEPROM() {
// read var configured from Byte 0
//EEPROM.get(0, configured);
// read var WIFIssid, 32 byte long
EEPROM.get(0, WIFIssid);
// read var WIFIpassword, 64 byte long
EEPROM.get(32, WIFIpassword);
/* /*
// read var ip, 16 byte long * WIFI data
EEPROM.get(112, WIFIip); */
// read var netmask, 16 byte long
EEPROM.get(128, WIFInetmask); // read var WIFIssid from address 0, 32 byte long
// read var gateway, 16 byte long EEPROM.get(0, WIFIssid);
EEPROM.get(144, WIFIgateway); // read var WIFIpassword from address 32, 64 byte long
EEPROM.get(32, WIFIpassword);
// read var WIFIip from address 96, 16 byte long
EEPROM.get(96, WIFIip);
Serial.print("configured: "); // read var WIFInetmask from address 112, 16 byte long
Serial.println(configured); EEPROM.get(112, WIFInetmask);
*/ // read var WIFIgateway from address 128, 16 byte long
EEPROM.get(128, WIFIgateway);
/*
* Grow data
*/
//TBD
/*
* configured
*
* read var configured from address 511 - I put this to the end to
* prevent confusion with the 1 byte offset in the address when it
* would be at the beginning - more a cosmetic thing
*/
EEPROM.get(511, configured);
// print values to Serial output
Serial.println(":: EEPROM loaded ::"); Serial.println(":: EEPROM loaded ::");
Serial.print("WIFIssid: "); Serial.print("WIFIssid: ");
Serial.println(WIFIssid); Serial.println(WIFIssid);
Serial.print("WIFIpassword: "); Serial.print("WIFIpassword: ");
Serial.println(WIFIpassword); Serial.println(WIFIpassword);
/*
Serial.print("WIFIip: "); Serial.print("configured: ");
Serial.println(WIFIip); Serial.println(configured);
Serial.print("WIFInetmask: ");
Serial.println(WIFInetmask);
Serial.print("WIFIgateway: ");
Serial.println(WIFIgateway);
*/
return(configured);
return(configured);
} }
@ -418,13 +444,11 @@ void setup() {
// Start Serial // Start Serial
Serial.begin(115200); Serial.begin(115200);
// Write an empty line, because before there is some garbage in serial // Write an empty line, because before there is some garbage in serial
// output // output
Serial.println(""); Serial.println("");
Serial.println(".:: CanGrow Start ::."); Serial.println(".:: CanGrow Start ::.");
// load stored values from EEPROM
loadEEPROM();
// initialise Wire for I2C // initialise Wire for I2C
Wire.begin(); Wire.begin();
@ -458,22 +482,28 @@ void setup() {
// wait a few seconds to let the user pull D4 down to wipe EEPROM // wait a few seconds to let the user pull D4 down to wipe EEPROM
// and we can enjoy the boot screen meanwhile :p // and we can enjoy the boot screen meanwhile :p
delay(2000); delay(2000);
// read status from PIN_WIPE to WIPE // read status from PIN_WIPE to WIPE
WIPE = digitalRead(PIN_WIPE); WIPE = digitalRead(PIN_WIPE);
Serial.print("WIPE is ");
Serial.println(WIPE); // when PIN_WIPE is set to LOW, wipe EEPROM
if( WIPE == 0 ) { if( WIPE == 0 ) {
Serial.print("PIN_WIPE (D4) is set to LOW, wiping EEPROM now..");
// wipe EEPROM
wipeEEPROM(); wipeEEPROM();
} else {
// load stored values from EEPROM
loadEEPROM();
} }
// /*
// Webserver handlers * Webserver handlers
// */
// when not configured, webroot is WEBrootAP // when not configured, webroot is WEBrootAP
// nothing else configured // nothing else configured
@ -565,18 +595,19 @@ void POSTwifiConfig() {
WIFIip.fromString(WIFIip_new); WIFIip.fromString(WIFIip_new);
WIFInetmask.fromString(WIFInetmask_new); WIFInetmask.fromString(WIFInetmask_new);
WIFIgateway.fromString(WIFIgateway_new); WIFIgateway.fromString(WIFIgateway_new);
//configured = 1;
configured = true;
EEPROM.put(0, WIFIssid); EEPROM.put(0, WIFIssid);
EEPROM.put(32, WIFIpassword); EEPROM.put(32, WIFIpassword);
EEPROM.put(96, WIFIip);
EEPROM.put(112, WIFInetmask);
EEPROM.put(128, WIFIgateway);
EEPROM.put(511, configured);
EEPROM.commit(); EEPROM.commit();
Serial.println(":: POSTwifiConfig ::"); Serial.println(":: POSTwifiConfig ::");
//Serial.print("configured: ");
//Serial.println(configured);
Serial.print("WIFIssid: "); Serial.print("WIFIssid: ");
Serial.println(WIFIssid_new); Serial.println(WIFIssid_new);
@ -584,25 +615,16 @@ void POSTwifiConfig() {
Serial.print("WIFIpassword: "); Serial.print("WIFIpassword: ");
Serial.println(WIFIpassword_new); Serial.println(WIFIpassword_new);
Serial.println(WIFIpassword); Serial.println(WIFIpassword);
/*
Serial.print("WIFIip: "); Serial.print("WIFIip: ");
Serial.println(WIFIip_new); Serial.println(WIFIip_new);
Serial.print("WIFInetmask: "); Serial.print("WIFInetmask: ");
Serial.println(WIFInetmask_new); Serial.println(WIFInetmask_new);
Serial.print("WIFIgateway: "); Serial.print("WIFIgateway: ");
Serial.println(WIFIgateway_new); Serial.println(WIFIgateway_new);
*/
char rofl[32]; Serial.print("configured: ");
EEPROM.get(0, rofl); Serial.println(configured);
Serial.println("READ EEPROM WIFIssid");
Serial.println(rofl);
Serial.println("READ EEPROM WIFIpassword");
char lol[64];
EEPROM.get(32, lol);
Serial.println(lol);
webserver.send(200, "text/html", "wifiConfig saved, please restart"); webserver.send(200, "text/html", "wifiConfig saved, please restart");
} }