123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- /*
- * settings.h
- *
- * Created on: Jan 12, 2021
- * Author: David Original work by Jose (PTDreamer), 2017
- */
- #ifndef SETTINGS_H_
- #define SETTINGS_H_
- #include "main.h"
- #include "pid.h"
- #include "board.h"
- #define ProfileSize 3 // Number of profiles
- #define TipSize 10 // Number of tips for each profile
- #define TipCharSize 5 // String size for each tip name (Including null terminator)
- #ifndef T12_Cal250
- #define T12_Cal250 1100 // Default values to be used in the calibration if not adjusted
- #define T12_Cal350 1200 // TODO: Move these values to the board profile, so each board can have a closer default calibration
- #define T12_Cal450 1300 // But we don't have calibration data from users!
- #endif
- #define C210_Cal250 300
- #define C210_Cal350 400
- #define C210_Cal450 500
- #define C245_Cal250 900
- #define C245_Cal350 1000
- #define C245_Cal450 1100
- //#define SWSTRING "SW: v1.10" // For releases
- #define SWSTRING "SW: 2021-07-02" // For git
- #define SETTINGS_VERSION 3 // Change this if you change the struct below to prevent people getting out of sync
- #define StoreSize 2 // In KB
- #define FLASH_ADDR (0x8000000 + ((FLASH_SZ-StoreSize)*1024)) // Last 2KB flash (Minimum erase size, page size=2KB)
- enum{
- wakeInputmode_shake = 0,
- wakeInputmode_stand = 1,
- wakeButton_Off = 0,
- wakeButton_On = 1,
- wakeShake_Off = 0,
- wakeShake_On = 1,
- source_wakeInput = 0,
- source_wakeButton = 1,
- no_update = 0,
- needs_update = 1,
- runaway_ok = 0,
- runaway_25 = 1,
- runaway_50 = 2,
- runaway_75 = 3,
- runaway_100 = 4,
- runaway_500 = 5,
- runaway_triggered = 1,
- noError = 0,
- setError = 1,
- debug_Off = 0,
- debug_On = 1,
- calibration_Off = 0,
- calibration_On = 1,
- saveKeepingProfiles = 0,
- saveWipingProfiles = 1,
- setup_Off = 0,
- setup_On = 1,
- encoder_normal = 0,
- encoder_reverse = 1,
- mode_Celsius = 0,
- mode_Farenheit = 1,
- mode_sleep = 0,
- mode_standby = 1,
- mode_run = 2,
- initialized = 0,
- buzzer_Off = 0,
- buzzer_On = 1,
- profile_T12 = 0,
- profile_C245 = 1,
- profile_C210 = 2,
- profile_None = 0xff
- };
- typedef struct tipData {
- uint16_t calADC_At_250;
- uint16_t calADC_At_350;
- uint16_t calADC_At_450;
- char name[TipCharSize];
- pid_values_t PID;
- }tipData;
- typedef struct{
- uint8_t NotInitialized;
- uint8_t ID;
- uint8_t impedance;
- uint8_t tempUnit;
- uint8_t currentNumberOfTips;
- uint8_t currentTip;
- uint8_t filterFactor;
- int8_t CalNTC;
- uint16_t UserSetTemperature;
- uint16_t MaxSetTemperature;
- uint16_t MinSetTemperature;
- uint16_t sleepTimeout;
- uint16_t standbyTimeout;
- uint16_t standbyTemperature;
- uint16_t pwmPeriod;
- uint16_t pwmDelay;
- uint16_t noIronValue;
- uint16_t power;
- uint16_t Cal250_default;
- uint16_t Cal350_default;
- uint16_t Cal450_default;
- tipData tip[TipSize];
- }profile_t;
- typedef struct{
- uint8_t NotInitialized; // Always 1 if flash is erased
- uint8_t contrast;
- uint8_t OledOffset;
- uint8_t currentProfile;
- uint8_t saveSettingsDelay;
- uint8_t initMode;
- uint8_t tempStep;
- uint8_t screenDimming;
- uint8_t tempUnit;
- uint8_t activeDetection;
- uint8_t buzzerMode;
- uint8_t wakeOnButton;
- uint8_t wakeOnShake;
- uint8_t WakeInputMode;
- uint8_t StandMode;
- uint8_t EncoderMode;
- uint16_t errorDelay;
- uint16_t guiUpdateDelay;
- uint16_t lvp;
- uint32_t version; // Used to track if a reset is needed on firmware upgrade
- }settings_t;
- typedef __attribute__((aligned(4))) struct{
- settings_t settings;
- uint32_t settingsChecksum;
- profile_t Profile;
- uint32_t ProfileChecksum;
- bool setupMode;
- }systemSettings_t;
- typedef __attribute__((aligned(4))) struct{
- profile_t Profile[ProfileSize];
- uint32_t ProfileChecksum[ProfileSize];
- settings_t settings;
- uint32_t settingsChecksum;
- }flashSettings_t;
- extern systemSettings_t systemSettings;
- extern flashSettings_t* flashSettings;
- void Diag_init(void);
- void checkSettings(void);
- void saveSettings(bool wipeAllProfileData);
- void restoreSettings();
- uint32_t ChecksumSettings(settings_t* settings);
- uint32_t ChecksumProfile(profile_t* profile);
- void resetSystemSettings(void);
- void resetCurrentProfile(void);
- void storeTipData(uint8_t tip);
- void loadProfile(uint8_t tip);
- #endif /* SETTINGS_H_ */
|