105 Zeilen
2.9 KiB
C
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
|
|
}
|
|
//--------------------------------------------------------------
|