This generates dedicates Translation.cpp files for translation language and derives all language-specific data from them. The Makefile is extended to also take care of generating these source files. This allows reuse of nearly all object files between builds of different languages for the same model and regenerating the translation sources if necessary. This speeds up the release builds and the normal write-compile-cycle considerably. It also eliminates miscompilations when manually building different languages.
100 lines
3.9 KiB
C++
100 lines
3.9 KiB
C++
/*
|
|
* Settings.c
|
|
*
|
|
* Created on: 29 Sep 2016
|
|
* Author: Ralim
|
|
*
|
|
* This file holds the users settings and saves / restores them to the
|
|
* devices flash
|
|
*/
|
|
|
|
#include "Settings.h"
|
|
#include "../../configuration.h"
|
|
#include "BSP.h"
|
|
#include "Setup.h"
|
|
|
|
#include "string.h"
|
|
volatile systemSettingsType systemSettings;
|
|
|
|
void saveSettings() {
|
|
// First we erase the flash
|
|
flash_save_buffer((uint8_t *)&systemSettings, sizeof(systemSettingsType));
|
|
}
|
|
|
|
bool restoreSettings() {
|
|
// We read the flash
|
|
flash_read_buffer((uint8_t *)&systemSettings, sizeof(systemSettingsType));
|
|
|
|
// if the version is correct were done
|
|
// if not we reset and save
|
|
if (systemSettings.version != SETTINGSVERSION) {
|
|
// probably not setup
|
|
resetSettings();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
// Lookup function for cutoff setting -> X10 voltage
|
|
/*
|
|
* 0=DC
|
|
* 1=3S
|
|
* 2=4S
|
|
* 3=5S
|
|
* 4=6S
|
|
*/
|
|
uint8_t lookupVoltageLevel() {
|
|
if (systemSettings.minDCVoltageCells == 0)
|
|
return 90; // 9V since iron does not function effectively below this
|
|
else
|
|
return (systemSettings.minDCVoltageCells * 33) + (33 * 2);
|
|
}
|
|
void resetSettings() {
|
|
memset((void *)&systemSettings, 0, sizeof(systemSettingsType));
|
|
systemSettings.SleepTemp = SLEEP_TEMP; // Temperature the iron sleeps at - default 150.0 C
|
|
systemSettings.SleepTime = SLEEP_TIME; // How many seconds/minutes we wait until going
|
|
// to sleep - default 1 min
|
|
systemSettings.SolderingTemp = SOLDERING_TEMP; // Default soldering temp is 320.0 C
|
|
systemSettings.minDCVoltageCells = CUT_OUT_SETTING; // default to no cut-off voltage
|
|
systemSettings.QCIdealVoltage = 0; // Default to 9V for QC3.0 Voltage
|
|
systemSettings.version = SETTINGSVERSION; // Store the version number to allow for easier upgrades
|
|
systemSettings.detailedSoldering = DETAILED_SOLDERING; // Detailed soldering screen
|
|
systemSettings.detailedIDLE = DETAILED_IDLE; // Detailed idle screen (off for first time users)
|
|
systemSettings.OrientationMode = ORIENTATION_MODE; // Default to automatic
|
|
systemSettings.sensitivity = SENSITIVITY; // Default high sensitivity
|
|
systemSettings.voltageDiv = VOLTAGE_DIV; // Default divider from schematic
|
|
systemSettings.ShutdownTime = SHUTDOWN_TIME; // How many minutes until the unit turns itself off
|
|
systemSettings.BoostTemp = BOOST_TEMP; // default to 400C
|
|
systemSettings.autoStartMode = AUTO_START_MODE; // Auto start off for safety
|
|
systemSettings.lockingMode = LOCKING_MODE; // Disable locking for safety
|
|
systemSettings.coolingTempBlink = COOLING_TEMP_BLINK; // Blink the temperature on the cooling screen when its > 50C
|
|
systemSettings.temperatureInF = TEMPERATURE_INF; // default to 0
|
|
systemSettings.descriptionScrollSpeed = DESCRIPTION_SCROLL_SPEED; // default to slow
|
|
systemSettings.CalibrationOffset = CALIBRATION_OFFSET; // the adc offset in uV
|
|
systemSettings.powerLimit = POWER_LIMIT; // 30 watts default limit
|
|
systemSettings.ReverseButtonTempChangeEnabled = REVERSE_BUTTON_TEMP_CHANGE; //
|
|
systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; //
|
|
systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; //
|
|
systemSettings.KeepAwakePulse = POWER_PULSE_DEFAULT;
|
|
systemSettings.hallEffectSensitivity = 1;
|
|
systemSettings.accelMissingWarningCounter = 0;
|
|
systemSettings.pdMissingWarningCounter = 0;
|
|
|
|
saveSettings(); // Save defaults
|
|
}
|
|
|
|
uint16_t lookupHallEffectThreshold() {
|
|
// Return the threshold above which the hall effect sensor is "activated"
|
|
switch (systemSettings.hallEffectSensitivity) {
|
|
case 0:
|
|
return 0;
|
|
case 1: // Low
|
|
return 1000;
|
|
case 2: // Medium
|
|
return 500;
|
|
case 3: // High
|
|
return 100;
|
|
default:
|
|
return 0; // Off
|
|
}
|
|
}
|