/* Reflow Oven Controller * * Copyright (C) 2020 Mario Hüttel * * This file is part of the Reflow Oven Controller Project. * * The reflow oven controller is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * The Reflow Oven Control Firmware 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 the reflow oven controller project. * If not, see . */ #ifndef __SETTINGS_SETTINGS_H__ #define __SETTINGS_SETTINGS_H__ #include struct oven_pid_settings { float kd; float kp; float ki; float kd_tau; float t_sample; float max_integral; }; enum settings_load_result { SETT_LOAD_SUCCESS = 0, SETT_LOAD_FILE_NOT_FOUND, SETT_LOAD_ERR, SETT_LOAD_DISK_ERR }; #define SETTINGS_PID_PARAMETER_FILE "pid.conf" /** * @brief Save the calibration * @param sens_deviation * @param offset * @return 0 if successful, -1 if generic error, -2 if medium unavailable */ int settings_save_calibration(float sens_deviation, float offset, bool active); int settings_load_calibration(float *sens_dev, float *offset); enum settings_load_result settings_load_pid_oven_parameters(struct oven_pid_settings *settings); enum settings_load_result settings_load_overtemp_limit(float *over_temp_limit); int settings_save_overtemp_limit(float over_temp_limit, bool active); void settings_setup(void); #endif /* __SETTINGS_SETTINGS_H__ */