Ejemplo n.º 1
0
void saveConfig(void) {
  eepromSavedParametersStorage.versionMajor = FIRMWARE_VERSION_MAJOR;
  eepromSavedParametersStorage.versionMinor = FIRMWARE_VERSION_MINOR;
  eepromSavedParametersStorage.checkSum = calculateCheckSum();
  EEPROM.begin(sizeof(eepromSavedParametersStorage) + EEPROM_SAVED_PARAMETERS_ADDRESS);
  saveToEEPROM(EEPROM_SAVED_PARAMETERS_ADDRESS,
               (void *)&eepromSavedParametersStorage,
               sizeof(eepromSavedParametersStorage));
  EEPROM.end();
  DiagLogLegacy.print(F("["));
  DiagLogLegacy.print(millis());
  DiagLogLegacy.println(F("] Config saved to EEPROM."));
}
Ejemplo n.º 2
0
  //the fault handler isn't a device per se and uses more memory than a device would normally be allocated so
  //it does not use PrefHandler
  void FaultHandler::loadFromEEPROM() 
  {
	  uint8_t validByte;
	  memCache->Read(EE_FAULT_LOG, &validByte);
	  if (validByte == 0xB2) //magic byte value for a valid fault cache
	  {
		  memCache->Read(EE_FAULT_LOG + EEFAULT_READPTR, &faultReadPointer);
		  memCache->Read(EE_FAULT_LOG + EEFAULT_WRITEPTR, &faultWritePointer);
		  memCache->Read(EE_FAULT_LOG + EEFAULT_RUNTIME, &globalTime);
		  baseTime = globalTime;
		  for (int i = 0; i < CFG_FAULT_HISTORY_SIZE; i++) 
		  {
			  memCache->Read(EE_FAULT_LOG + EEFAULT_FAULTS_START + sizeof(FAULT) * i, &faultList[i], sizeof(FAULT));
		  }
	  }
	  else //reinitialize the fault cache storage
	  {
		  validByte = 0xB2;
		  memCache->Write(EE_FAULT_LOG, validByte);
		  memCache->Write(EE_FAULT_LOG + EEFAULT_READPTR, (uint16_t)0);
		  memCache->Write(EE_FAULT_LOG + EEFAULT_WRITEPTR, (uint16_t)0);
		  globalTime = baseTime = millis() / 100;
		  memCache->Write(EE_FAULT_LOG + EEFAULT_RUNTIME, globalTime);

		  FAULT tempFault;
		  tempFault.ack = true;
		  tempFault.device = 0xFFFF;
		  tempFault.faultCode = 0xFFFF;
		  tempFault.ongoing = false;
		  tempFault.timeStamp = 0;
		  for (int i = 0; i < CFG_FAULT_HISTORY_SIZE; i++) 
		  {
			  faultList[i] = tempFault;
		  }
		  saveToEEPROM();
	  }
  }