#include "Module.h"
#include "Pwm.h"
#include "TempSensor.h"
-
-class TemperatureControlPool;
+#include "TemperatureControlPublicAccess.h"
class TemperatureControl : public Module {
public:
- TemperatureControl(uint16_t name);
+ TemperatureControl(uint16_t name, int index);
~TemperatureControl();
void on_module_loaded();
void on_main_loop(void* argument);
void on_gcode_execute(void* argument);
void on_gcode_received(void* argument);
- void on_config_reload(void* argument);
void on_second_tick(void* argument);
void on_get_public_data(void* argument);
void on_set_public_data(void* argument);
+ void on_halt(void* argument);
void set_desired_temperature(float desired_temperature);
- int pool_index;
- TemperatureControlPool *pool;
+ float get_temperature();
+
friend class PID_Autotuner;
- float get_temperature();
private:
+ void load_config();
uint32_t thermistor_read_tick(uint32_t dummy);
void pid_process(float);
+ int pool_index;
+
float target_temperature;
+ float max_temp;
float preset1;
float preset2;
TempSensor *sensor;
-
+
// PID runtime
float i_max;
Pwm heater_pin;
- bool use_bangbang;
- bool waiting;
- bool min_temp_violated;
-
uint16_t set_m_code;
uint16_t set_and_wait_m_code;
uint16_t get_m_code;
+ struct pad_temperature public_data_return;
- string designator;
+ std::string designator;
void setPIDp(float p);
void setPIDi(float i);
float i_factor;
float d_factor;
float PIDdt;
+
+ struct {
+ bool use_bangbang:1;
+ bool waiting:1;
+ bool min_temp_violated:1;
+ bool link_to_tool:1;
+ bool active:1;
+ bool readonly:1;
+ bool windup:1;
+ };
};
#endif