added max_temp config option to temperaturecontrol
[clinton/Smoothieware.git] / src / modules / tools / temperaturecontrol / TemperatureControl.cpp
index 96345a7..8c11d62 100644 (file)
@@ -43,6 +43,7 @@
 #define bang_bang_checksum                 CHECKSUM("bang_bang")
 #define hysteresis_checksum                CHECKSUM("hysteresis")
 #define heater_pin_checksum                CHECKSUM("heater_pin")
+#define max_temp                           CHECKSUM("max_temp")
 
 #define get_m_code_checksum                CHECKSUM("get_m_code")
 #define set_m_code_checksum                CHECKSUM("set_m_code")
@@ -124,6 +125,9 @@ void TemperatureControl::load_config()
 
     this->designator          = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, designator_checksum)->by_default(string("T"))->as_string();
 
+    // Max temperature we are not allowed to get over
+    this->max_temp = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, max_temp_checksum)->by_default(1000)->as_number();
+
     // Heater pin
     this->heater_pin.from_string( THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, heater_pin_checksum)->by_default("nc")->as_string());
     if(this->heater_pin.connected()){
@@ -318,6 +322,11 @@ void TemperatureControl::on_set_public_data(void *argument)
 
 void TemperatureControl::set_desired_temperature(float desired_temperature)
 {
+    // Never go over the configured max temperature
+    if( desired_temperature > this->max_temp ){
+        desired_temperature = this->max_temp;
+    }
+
     if (desired_temperature == 1.0)
         desired_temperature = preset1;
     else if (desired_temperature == 2.0)