mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
Allows users to enable a boost mode. This allows you to hold down the button near the tip while soldering to temporarily boost the soldering temperature. Closes #10
62 lines
2.3 KiB
C
62 lines
2.3 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"
|
|
#define FLASH_ADDR (0x8000000|48896)/*Flash start OR'ed with the maximum amount of flash - 256 bytes*/
|
|
void saveSettings() {
|
|
//First we erase the flash
|
|
FLASH_Unlock(); //unlock flash writing
|
|
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
|
|
while (FLASH_ErasePage(FLASH_ADDR) != FLASH_COMPLETE)
|
|
; //wait for it
|
|
//erased the chunk
|
|
//now we program it
|
|
uint16_t *data = (uint16_t*) &systemSettings;
|
|
for (uint8_t i = 0; i < (sizeof(systemSettings) / 2); i++) {
|
|
FLASH_ProgramHalfWord(FLASH_ADDR + (i * 2), data[i]);
|
|
}
|
|
}
|
|
|
|
void restoreSettings() {
|
|
//We read the flash
|
|
uint16_t *data = (uint16_t*) &systemSettings;
|
|
for (uint8_t i = 0; i < (sizeof(systemSettings) / 2); i++) {
|
|
data[i] = *(uint16_t *) (FLASH_ADDR + (i * 2));
|
|
}
|
|
//if the version is correct were done
|
|
//if not we reset and save
|
|
if (systemSettings.version != SETTINGSVERSION) {
|
|
//probably not setup
|
|
resetSettings();
|
|
saveSettings();
|
|
}
|
|
|
|
}
|
|
|
|
void resetSettings() {
|
|
|
|
systemSettings.SleepTemp = 1500; //Temperature the iron sleeps at - default 150.0 C
|
|
systemSettings.SleepTime = 1; //How many minutes we wait until going to sleep - default 1 min
|
|
systemSettings.SolderingTemp = 3200; //Default soldering temp is 320.0 C
|
|
systemSettings.movementEnabled = 1; //we use movement detection by default
|
|
systemSettings.cutoutVoltage = 10; //10V is the minium cutout voltage as the unit V measurement is unstable below 9.5V
|
|
systemSettings.version = SETTINGSVERSION; //Store the version number to allow for easier upgrades
|
|
systemSettings.displayTempInF =0; //default to C
|
|
systemSettings.flipDisplay=0; //Default to right handed mode
|
|
systemSettings.sensitivity=0x00; //Default high sensitivity
|
|
systemSettings.tempCalibration=239; //Default to their calibration value
|
|
systemSettings.voltageDiv=144; //Default divider from schematic
|
|
systemSettings.ShutdownTime=30; //How many minutes until the unit turns itself off
|
|
systemSettings.displayUpdateSpeed=1; //How fast the LCD updates
|
|
systemSettings.temperatureRounding=0; //How the temperature is rounded off
|
|
systemSettings.boostModeEnabled=0; //Default to safe, with no boost mode
|
|
systemSettings.BoostTemp=4000; //default to 400C
|
|
}
|
|
|