X-Git-Url: http://git.hcoop.net/clinton/Smoothieware.git/blobdiff_plain/255219dc38c8dfc04a884724317baa855c52a5c6..922f169dba03c9f249a0746dbab0efde0ad10dc1:/src/libs/Kernel.cpp diff --git a/src/libs/Kernel.cpp b/src/libs/Kernel.cpp index bbd260e5..83fe48c2 100644 --- a/src/libs/Kernel.cpp +++ b/src/libs/Kernel.cpp @@ -28,6 +28,7 @@ #include "EndstopsPublicAccess.h" #include "Configurator.h" #include "SimpleShell.h" +#include "TemperatureControlPublicAccess.h" #ifndef NO_TOOLS_LASER #include "Laser.h" @@ -49,7 +50,6 @@ #define grbl_mode_checksum CHECKSUM("grbl_mode") #define feed_hold_enable_checksum CHECKSUM("enable_feed_hold") #define ok_per_line_checksum CHECKSUM("ok_per_line") -#define new_status_format_checksum CHECKSUM("new_status_format") Kernel* Kernel::instance; @@ -119,8 +119,6 @@ Kernel::Kernel() // we expect ok per line now not per G code, setting this to false will return to the old (incorrect) way of ok per G code this->ok_per_line = this->config->value( ok_per_line_checksum )->by_default(true)->as_bool(); - this->new_status_format = this->config->value( new_status_format_checksum )->by_default(false)->as_bool(); - this->add_module( this->serial ); // HAL stuff @@ -207,56 +205,44 @@ std::string Kernel::get_query_string() size_t n = snprintf(buf, sizeof(buf), "%1.4f,%1.4f,%1.4f", robot->from_millimeters(mpos[0]), robot->from_millimeters(mpos[1]), robot->from_millimeters(mpos[2])); if(n > sizeof(buf)) n= sizeof(buf); - if(new_status_format) { - str.append("|MPos:").append(buf, n); + str.append("|MPos:").append(buf, n); #if MAX_ROBOT_ACTUATORS > 3 - // deal with the ABC axis (E will be A) - for (int i = A_AXIS; i < robot->get_number_registered_motors(); ++i) { - // current actuator position - n = snprintf(buf, sizeof(buf), ",%1.4f", robot->from_millimeters(robot->actuators[i]->get_current_position())); - if(n > sizeof(buf)) n= sizeof(buf); - str.append(buf, n); - } -#endif - - }else{ - str.append(",MPos:").append(buf, n); + // deal with the ABC axis (E will be A) + for (int i = A_AXIS; i < robot->get_number_registered_motors(); ++i) { + // current actuator position + n = snprintf(buf, sizeof(buf), ",%1.4f", robot->from_millimeters(robot->actuators[i]->get_current_position())); + if(n > sizeof(buf)) n= sizeof(buf); + str.append(buf, n); } +#endif // work space position Robot::wcs_t pos = robot->mcs2wcs(mpos); n = snprintf(buf, sizeof(buf), "%1.4f,%1.4f,%1.4f", robot->from_millimeters(std::get(pos)), robot->from_millimeters(std::get(pos)), robot->from_millimeters(std::get(pos))); if(n > sizeof(buf)) n= sizeof(buf); - if(new_status_format) { - str.append("|WPos:").append(buf, n); - // current feedrate - float fr= robot->from_millimeters(conveyor->get_current_feedrate()*60.0F); - n = snprintf(buf, sizeof(buf), "|F:%1.4f", fr); - if(n > sizeof(buf)) n= sizeof(buf); - str.append(buf, n); - float sr= robot->get_s_value(); - n = snprintf(buf, sizeof(buf), "|S:%1.4f", sr); - if(n > sizeof(buf)) n= sizeof(buf); - str.append(buf, n); - - // current Laser power - #ifndef NO_TOOLS_LASER - Laser *plaser= nullptr; - if(PublicData::get_value(laser_checksum, (void *)&plaser) && plaser != nullptr) { - float lp= plaser->get_current_power(); - n = snprintf(buf, sizeof(buf), "|L:%1.4f", lp); - if(n > sizeof(buf)) n= sizeof(buf); - str.append(buf, n); - } - #endif - - }else{ - str.append(",WPos:").append(buf, n); - } - - str.append(">\r\n"); + str.append("|WPos:").append(buf, n); + // current feedrate + float fr= robot->from_millimeters(conveyor->get_current_feedrate()*60.0F); + n = snprintf(buf, sizeof(buf), "|F:%1.4f", fr); + if(n > sizeof(buf)) n= sizeof(buf); + str.append(buf, n); + float sr= robot->get_s_value(); + n = snprintf(buf, sizeof(buf), "|S:%1.4f", sr); + if(n > sizeof(buf)) n= sizeof(buf); + str.append(buf, n); + + // current Laser power + #ifndef NO_TOOLS_LASER + Laser *plaser= nullptr; + if(PublicData::get_value(laser_checksum, (void *)&plaser) && plaser != nullptr) { + float lp= plaser->get_current_power(); + n = snprintf(buf, sizeof(buf), "|L:%1.4f", lp); + if(n > sizeof(buf)) n= sizeof(buf); + str.append(buf, n); + } + #endif } else { // return the last milestone if idle @@ -265,41 +251,48 @@ std::string Kernel::get_query_string() Robot::wcs_t mpos = robot->get_axis_position(); size_t n = snprintf(buf, sizeof(buf), "%1.4f,%1.4f,%1.4f", robot->from_millimeters(std::get(mpos)), robot->from_millimeters(std::get(mpos)), robot->from_millimeters(std::get(mpos))); if(n > sizeof(buf)) n= sizeof(buf); - if(new_status_format) { - str.append("|MPos:").append(buf, n); -#if MAX_ROBOT_ACTUATORS > 3 - // deal with the ABC axis (E will be A) - for (int i = A_AXIS; i < robot->get_number_registered_motors(); ++i) { - // current actuator position - n = snprintf(buf, sizeof(buf), ",%1.4f", robot->from_millimeters(robot->actuators[i]->get_current_position())); - if(n > sizeof(buf)) n= sizeof(buf); - str.append(buf, n); - } -#endif - }else{ - str.append(",MPos:").append(buf, n); + str.append("|MPos:").append(buf, n); + +#if MAX_ROBOT_ACTUATORS > 3 + // deal with the ABC axis (E will be A) + for (int i = A_AXIS; i < robot->get_number_registered_motors(); ++i) { + // current actuator position + n = snprintf(buf, sizeof(buf), ",%1.4f", robot->from_millimeters(robot->actuators[i]->get_current_position())); + if(n > sizeof(buf)) n= sizeof(buf); + str.append(buf, n); } +#endif // work space position Robot::wcs_t pos = robot->mcs2wcs(mpos); n = snprintf(buf, sizeof(buf), "%1.4f,%1.4f,%1.4f", robot->from_millimeters(std::get(pos)), robot->from_millimeters(std::get(pos)), robot->from_millimeters(std::get(pos))); if(n > sizeof(buf)) n= sizeof(buf); - if(new_status_format) { - str.append("|WPos:").append(buf, n); - }else{ - str.append(",WPos:").append(buf, n); - } + str.append("|WPos:").append(buf, n); - if(new_status_format) { - float fr= robot->from_millimeters(robot->get_feed_rate()); - n = snprintf(buf, sizeof(buf), "|F:%1.4f", fr); - if(n > sizeof(buf)) n= sizeof(buf); - str.append(buf, n); - } + float fr= robot->from_millimeters(robot->get_feed_rate()); + n = snprintf(buf, sizeof(buf), "|F:%1.4f", fr); + if(n > sizeof(buf)) n= sizeof(buf); + str.append(buf, n); + } - str.append(">\r\n"); + // if not grbl mode get temperatures + if(!is_grbl_mode()) { + struct pad_temperature temp; + // scan all temperature controls + std::vector controllers; + bool ok = PublicData::get_value(temperature_control_checksum, poll_controls_checksum, &controllers); + if (ok) { + char buf[32]; + for (auto &c : controllers) { + size_t n= snprintf(buf, sizeof(buf), "|%s:%1.1f,%1.1f", c.designator.c_str(), c.current_temperature, c.target_temperature); + if(n > sizeof(buf)) n= sizeof(buf); + str.append(buf, n); + } + } } + + str.append(">\n"); return str; }