Lab_interaccio/2011/Photoduino/config_manager.ino
2025-02-25 21:29:42 +01:00

211 lines
11 KiB
C++

/*
* This file is part of Photoduino.
*
* Photoduino is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Photoduino is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Photoduino. If not, see <http://www.gnu.org/licenses/>.
*/
void config_init(){
// Check if the firmware version is the same of eeprom config
if (
EEPROM.read(EE_ADDR_SIGNATURE_CODE1) == SIGNATURE_CODE1 &&
EEPROM.read(EE_ADDR_SIGNATURE_CODE2) == SIGNATURE_CODE2 &&
EEPROM.read(EE_ADDR_SIGNATURE_CODE3) == SIGNATURE_CODE3 &&
EEPROM.read(EE_ADDR_SIGNATURE_CODE4) == SIGNATURE_CODE4 &&
EEPROM.read(EE_ADDR_CODE_MAJOR_VERSION) == CODE_MAJOR_VERSION &&
EEPROM.read(EE_ADDR_CODE_MINOR_VERSION) == CODE_MINOR_VERSION
) {
// loads in ram the eeprom config
config_loadBackup_all();
} else {
// clear the eeprom
backlight_toggle();
display_printResetting();
for (unsigned int i = 0; i < EEPROM_SIZE; i++) {
display_printProgressBar(i, EEPROM_SIZE);
EEPROM.write(i, 0xFF);
}
// writes sign codes
EEPROM.write(EE_ADDR_SIGNATURE_CODE1,SIGNATURE_CODE1);
EEPROM.write(EE_ADDR_SIGNATURE_CODE2,SIGNATURE_CODE2);
EEPROM.write(EE_ADDR_SIGNATURE_CODE3,SIGNATURE_CODE3);
EEPROM.write(EE_ADDR_SIGNATURE_CODE4,SIGNATURE_CODE4);
EEPROM.write(EE_ADDR_CODE_MAJOR_VERSION,CODE_MAJOR_VERSION);
EEPROM.write(EE_ADDR_CODE_MINOR_VERSION,CODE_MINOR_VERSION);
// load defaults in ram and save it on eeprom
config_loadDefaults_all();
config_saveBackup_all();
}
}
void config_loadDefaults_all(){
config_loadDefaults_system();
config_loadDefaults_intervalometerMode();
config_loadDefaults_sensorTriggerMode();
}
void config_saveBackup_all(){
config_saveBackup_system();
config_saveBackup_intervalometerMode();
config_saveBackup_sensorTriggerMode();
}
void config_loadBackup_all(){
config_loadBackup_system();
config_loadBackup_intervalometerMode();
config_loadBackup_sensorTriggerMode();
}
// Load the system config from eeprom to ram
void config_loadBackup_system(){
system_useBacklight = EEPROM.read(EE_ADDR_system_useBacklight);
system_useSpeaker = EEPROM.read(EE_ADDR_system_useSpeaker);
system_sensorTuningMode = EEPROM.read(EE_ADDR_system_sensorTuningMode);
system_cameraShutterLag = eeprom_readInt(EE_ADDR_system_cameraShutterLag);
system_cameraMirrorLockUpTimeout = eeprom_readInt(EE_ADDR_system_cameraMirrorLockUpTimeout);
system_useFlash1 = EEPROM.read(EE_ADDR_system_useFlash1);
system_useFlash2 = EEPROM.read(EE_ADDR_system_useFlash2);
system_devicePortType = EEPROM.read(EE_ADDR_system_devicePortType);
}
// Load the default system config to ram
void config_loadDefaults_system() {
system_useBacklight = DEFAULT_system_useBacklight;
system_useSpeaker = DEFAULT_system_useSpeaker;
system_sensorTuningMode = DEFAULT_system_sensorTuningMode;
system_cameraShutterLag = DEFAULT_system_cameraShutterLag;
system_cameraMirrorLockUpTimeout = DEFAULT_system_cameraMirrorLockUpTimeout;
system_useFlash1 = DEFAULT_system_useFlash1;
system_useFlash2 = DEFAULT_system_useFlash2;
system_devicePortType = DEFAULT_system_devicePortType;
}
// Save the system config from ram to eeprom
void config_saveBackup_system(){
EEPROM.write(EE_ADDR_system_useBacklight, system_useBacklight);
EEPROM.write(EE_ADDR_system_useSpeaker, system_useSpeaker);
EEPROM.write(EE_ADDR_system_sensorTuningMode, system_sensorTuningMode);
eeprom_writeInt(EE_ADDR_system_cameraShutterLag, system_cameraShutterLag);
eeprom_writeInt(EE_ADDR_system_cameraMirrorLockUpTimeout, system_cameraMirrorLockUpTimeout);
EEPROM.write(EE_ADDR_system_useFlash1, system_useFlash1);
EEPROM.write(EE_ADDR_system_useFlash2, system_useFlash2);
EEPROM.write(EE_ADDR_system_devicePortType, system_devicePortType);
}
// Load the default interval mode config to ram
void config_loadDefaults_intervalometerMode() {
intervalometerMode_autofocusTime = DEFAULT_intervalometerMode_autofocusTime;
intervalometerMode_preFlash1Time = DEFAULT_intervalometerMode_preFlash1Time;
intervalometerMode_preFlash2Time = DEFAULT_intervalometerMode_preFlash2Time;
intervalometerMode_preCloseTime = DEFAULT_intervalometerMode_preCloseTime;
intervalometerMode_intervalUnits = DEFAULT_intervalometerMode_intervalUnits;
intervalometerMode_intervalValue = DEFAULT_intervalometerMode_intervalValue;
intervalometerMode_numCycles = DEFAULT_intervalometerMode_numCycles;
}
// Save the inverval mode config to eeprom
void config_saveBackup_intervalometerMode(){
eeprom_writeInt(EE_ADDR_intervalometerMode_autofocusTime, intervalometerMode_autofocusTime);
eeprom_writeInt(EE_ADDR_intervalometerMode_preFlash1Time, intervalometerMode_preFlash1Time);
eeprom_writeInt(EE_ADDR_intervalometerMode_preFlash2Time, intervalometerMode_preFlash2Time);
eeprom_writeInt(EE_ADDR_intervalometerMode_preCloseTime, intervalometerMode_preCloseTime);
EEPROM.write(EE_ADDR_intervalometerMode_intervalUnits, intervalometerMode_intervalUnits);
eeprom_writeInt(EE_ADDR_intervalometerMode_intervalValue, intervalometerMode_intervalValue);
eeprom_writeInt(EE_ADDR_intervalometerMode_numCycles, intervalometerMode_numCycles);
}
// Load the interval mode config from eeprom to ram
void config_loadBackup_intervalometerMode(){
intervalometerMode_autofocusTime = eeprom_readInt(EE_ADDR_intervalometerMode_autofocusTime);
intervalometerMode_preFlash1Time = eeprom_readInt(EE_ADDR_intervalometerMode_preFlash1Time);
intervalometerMode_preFlash2Time = eeprom_readInt(EE_ADDR_intervalometerMode_preFlash2Time);
intervalometerMode_preCloseTime = eeprom_readInt(EE_ADDR_intervalometerMode_preCloseTime);
intervalometerMode_intervalUnits = EEPROM.read(EE_ADDR_intervalometerMode_intervalUnits);
intervalometerMode_intervalValue = eeprom_readInt(EE_ADDR_intervalometerMode_intervalValue);
intervalometerMode_numCycles = eeprom_readInt(EE_ADDR_intervalometerMode_numCycles);
}
// Load the sensorTriggerMode from eeprom to ram
void config_loadBackup_sensorTriggerMode(){
sensorTriggerMode_sensorType = EEPROM.read(EE_ADDR_sensorTriggerMode_sensorType);
sensorTriggerMode_sensorAudioLimit = eeprom_readInt(EE_ADDR_sensorTriggerMode_sensorAudioLimit);
sensorTriggerMode_sensorBarrierLimit = eeprom_readInt(EE_ADDR_sensorTriggerMode_sensorBarrierLimit);
sensorTriggerMode_sensorLightLimit = eeprom_readInt(EE_ADDR_sensorTriggerMode_sensorLightLimit);
sensorTriggerMode_sensorShockLimit = eeprom_readInt(EE_ADDR_sensorTriggerMode_sensorShockLimit);
sensorTriggerMode_shootingMode = EEPROM.read(EE_ADDR_sensorTriggerMode_shootingMode);
sensorTriggerMode_autofocusTime = eeprom_readInt(EE_ADDR_sensorTriggerMode_autofocusTime);
sensorTriggerMode_preFlash1Time = eeprom_readInt(EE_ADDR_sensorTriggerMode_preFlash1Time);
sensorTriggerMode_preFlash2Time = eeprom_readInt(EE_ADDR_sensorTriggerMode_preFlash2Time);
sensorTriggerMode_preCloseTime = eeprom_readInt(EE_ADDR_sensorTriggerMode_preCloseTime);
sensorTriggerMode_numCycles = eeprom_readInt(EE_ADDR_sensorTriggerMode_numCycles);
sensorTriggerMode_interCycleTime = eeprom_readInt(EE_ADDR_sensorTriggerMode_interCycleTime);
sensorTriggerMode_dropsCount = eeprom_readInt(EE_ADDR_sensorTriggerMode_dropsCount);
sensorTriggerMode_dropsDuration = eeprom_readInt(EE_ADDR_sensorTriggerMode_dropsDuration);
sensorTriggerMode_dropsInterval = eeprom_readInt(EE_ADDR_sensorTriggerMode_dropsInterval);
}
// Load the default sensorTriggerMode config to ram
void config_loadDefaults_sensorTriggerMode() {
sensorTriggerMode_sensorType = DEFAULT_sensorTriggerMode_sensorType;
sensorTriggerMode_sensorAudioLimit = DEFAULT_sensorTriggerMode_sensorAudioLimit;
sensorTriggerMode_sensorBarrierLimit = DEFAULT_sensorTriggerMode_sensorBarrierLimit;
sensorTriggerMode_sensorLightLimit = DEFAULT_sensorTriggerMode_sensorLightLimit;
sensorTriggerMode_sensorShockLimit = DEFAULT_sensorTriggerMode_sensorShockLimit;
sensorTriggerMode_shootingMode = DEFAULT_sensorTriggerMode_shootingMode;
sensorTriggerMode_autofocusTime = DEFAULT_sensorTriggerMode_autofocusTime;
sensorTriggerMode_preFlash1Time = DEFAULT_sensorTriggerMode_preFlash1Time;
sensorTriggerMode_preFlash2Time = DEFAULT_sensorTriggerMode_preFlash2Time;
sensorTriggerMode_preCloseTime = DEFAULT_sensorTriggerMode_preCloseTime;
sensorTriggerMode_numCycles = DEFAULT_sensorTriggerMode_numCycles;
sensorTriggerMode_interCycleTime = DEFAULT_sensorTriggerMode_interCycleTime;
sensorTriggerMode_dropsCount = DEFAULT_sensorTriggerMode_dropsCount;
sensorTriggerMode_dropsDuration = DEFAULT_sensorTriggerMode_dropsDuration;
sensorTriggerMode_dropsInterval = DEFAULT_sensorTriggerMode_dropsInterval;
}
// Save the sensorTriggerMode from ram to eeprom
void config_saveBackup_sensorTriggerMode(){
EEPROM.write(EE_ADDR_sensorTriggerMode_sensorType, sensorTriggerMode_sensorType);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_sensorAudioLimit, sensorTriggerMode_sensorAudioLimit);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_sensorBarrierLimit, sensorTriggerMode_sensorBarrierLimit);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_sensorLightLimit, sensorTriggerMode_sensorLightLimit);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_sensorShockLimit, sensorTriggerMode_sensorShockLimit);
EEPROM.write(EE_ADDR_sensorTriggerMode_shootingMode, sensorTriggerMode_shootingMode);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_autofocusTime, sensorTriggerMode_autofocusTime);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_preFlash1Time, sensorTriggerMode_preFlash1Time);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_preFlash2Time, sensorTriggerMode_preFlash2Time);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_preCloseTime, sensorTriggerMode_preCloseTime);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_numCycles, sensorTriggerMode_numCycles);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_interCycleTime, sensorTriggerMode_interCycleTime);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_dropsCount, sensorTriggerMode_dropsCount);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_dropsDuration, sensorTriggerMode_dropsDuration);
eeprom_writeInt(EE_ADDR_sensorTriggerMode_dropsInterval, sensorTriggerMode_dropsInterval);
}