105 Zeilen
2.9 KiB
C

//--------------------------------------------------------------
//Reset the EEPROM to default:
void EEPROM_Load_Defaults() {
#if defined(ESP32_MCU)
portMUX_TYPE myMutex = portMUX_INITIALIZER_UNLOCKED;
portENTER_CRITICAL(&myMutex);
#endif
#if defined(DEBUG)
Debug.println(F("Set all EEPROM to default!"));
#endif
//DCCInterfaceMaster:
FIXSTORAGE.FIXMODE(EEPROMRailCom, 1); //RailCom ON
FIXSTORAGE.FIXMODE(EEPROMRSTsRepeat, 25); //Reset Pakete (start)
FIXSTORAGE.FIXMODE(EEPROMRSTcRepeat, 6); //Reset Pakete (fortsetzen)
#if defined(ESP8266_MCU)
FIXSTORAGE.FIXMODE(EEPROMProgRepeat, 18); //Programmier Pakete, more to better detect ACK!
#else
FIXSTORAGE.FIXMODE(EEPROMProgRepeat, 7); //Programmier Pakete
#endif
FIXSTORAGE.FIXMODE(EES88Moduls, 62); //S88 max Module
//IP Werkseinstellung:
FIXSTORAGE.FIXMODE(EELANDHCP, 0); //kein DHCP
FIXSTORAGE.FIXMODE(EELANip, 192);
FIXSTORAGE.FIXMODE(EELANip+1, 168);
FIXSTORAGE.FIXMODE(EELANip+2, 0);
FIXSTORAGE.FIXMODE(EELANip+3, 111);
//Default VCC Rail and Prog to 20V:
FIXSTORAGE.FIXMODE(72, 32);
FIXSTORAGE.FIXMODE(73, 78);
FIXSTORAGE.FIXMODE(74, 32);
FIXSTORAGE.FIXMODE(75, 78);
//Default Prog option:
FIXSTORAGE.FIXMODE(52, 0); //Power Button behaviour
FIXSTORAGE.FIXMODE(53, 3);
//Z21 Library:
FIXSTORAGE.FIXMODE(1, 0xE8); //Z21 Serial LSB
FIXSTORAGE.FIXMODE(0, 0x01); //Z21 Serial MSB
#if defined(ESP_WIFI)
FIXSTORAGE.commit();
#endif
#if defined(ESP32_MCU)
portEXIT_CRITICAL(&myMutex);
#endif
}
//--------------------------------------------------------------
//Check the firmware status need update?:
void EEPROM_Setup() {
#if defined(DEBUG)
Debug.print(F("Check EEPROM..."));
#endif
byte SwVerMSB = FIXSTORAGE.read(EEPROMSwVerMSB);
byte SwVerLSB = FIXSTORAGE.read(EEPROMSwVerLSB);
//Check if we already run on this MCU?
if ((SwVerMSB == 0xFF) && (SwVerLSB == 0xFF)) {
//First Startup, set everything to default!
EEPROM_Load_Defaults();
}
//Check if there need to handel an update?
if ( (SwVerMSB != highByte(Z21mobileSwVer)) || (SwVerLSB != lowByte(Z21mobileSwVer)) ) {
//Update to new Firmware
#if defined(DEBUG)
Debug.println(F("Firmware Update!"));
#endif
/*
#if defined(ESP32)
portMUX_TYPE myMutex = portMUX_INITIALIZER_UNLOCKED;
portENTER_CRITICAL(&myMutex);
#endif
*/
FIXSTORAGE.FIXMODE(EEPROMSwVerMSB, highByte(Z21mobileSwVer));
FIXSTORAGE.FIXMODE(EEPROMSwVerLSB, lowByte(Z21mobileSwVer));
#if defined(ESP_WIFI)
FIXSTORAGE.commit();
#endif
/*
#if defined(ESP32)
portEXIT_CRITICAL(&myMutex);
#endif
*/
}
else {
#if defined(DEBUG)
Debug.println(F("OK"));
#endif
}
#if defined(ESP32)
yield();
#endif
}
//--------------------------------------------------------------