102 lines
3.6 KiB
C++
Executable File
102 lines
3.6 KiB
C++
Executable File
/*
|
|
* 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 "Setup.h"
|
|
#include "../../configuration.h"
|
|
#include "BSP.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
|
|
#ifdef ENABLED_FAHRENHEIT_SUPPORT
|
|
systemSettings.temperatureInF = TEMPERATURE_INF; // default to 0
|
|
#endif
|
|
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
|
|
}
|
|
}
|