Merge upstream changes from Marlin 2.1.1

This commit is contained in:
Stefan Kalscheuer
2022-09-03 09:23:32 +02:00
parent 626283aadb
commit 986e416c7f
1610 changed files with 73839 additions and 40857 deletions

View File

@@ -16,7 +16,7 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
@@ -47,31 +47,29 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) {
if (vp.addr == DGUS_Addr::SCREENCHANGE_SD) {
#if ENABLED(SDSUPPORT)
#if !PIN_EXISTS(SD_DETECT)
card.mount();
#endif
IF_DISABLED(HAS_SD_DETECT, card.mount());
if (!ExtUI::isMediaInserted()) {
dgus_screen_handler.SetStatusMessagePGM(GET_TEXT(MSG_NO_MEDIA));
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));
return;
}
card.cdroot();
#else
dgus_screen_handler.SetStatusMessagePGM(GET_TEXT(MSG_NO_MEDIA));
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));
return;
#endif
}
if (vp.addr == DGUS_Addr::SCREENCHANGE_Idle
&& (ExtUI::isPrinting() || ExtUI::isPrintingPaused())) {
dgus_screen_handler.SetStatusMessagePGM(PSTR("Impossible while printing"));
dgus_screen_handler.SetStatusMessage(F("Impossible while printing"));
return;
}
if (vp.addr == DGUS_Addr::SCREENCHANGE_Printing
&& (!ExtUI::isPrinting() && !ExtUI::isPrintingPaused())) {
dgus_screen_handler.SetStatusMessagePGM(PSTR("Impossible while idle"));
dgus_screen_handler.SetStatusMessage(F("Impossible while idle"));
return;
}
@@ -139,7 +137,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) {
UNUSED(data_ptr);
if (dgus_screen_handler.filelist_selected < 0) {
dgus_screen_handler.SetStatusMessagePGM(PSTR("No file selected"));
dgus_screen_handler.SetStatusMessage(F("No file selected"));
return;
}
@@ -149,7 +147,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) {
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -207,7 +205,7 @@ void DGUSRxHandler::PrintResume(DGUS_VP &vp, void *data_ptr) {
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -327,7 +325,7 @@ void DGUSRxHandler::TempTarget(DGUS_VP &vp, void *data_ptr) {
case DGUS_Addr::TEMP_SetTarget_H0:
ExtUI::setTargetTemp_celsius(temp, ExtUI::H0);
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Addr::TEMP_SetTarget_H1:
ExtUI::setTargetTemp_celsius(temp, ExtUI::H1);
break;
@@ -347,7 +345,7 @@ void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) {
case DGUS_Data::Heater::ALL:
ExtUI::setTargetTemp_celsius(0, ExtUI::BED);
ExtUI::setTargetTemp_celsius(0, ExtUI::H0);
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
ExtUI::setTargetTemp_celsius(0, ExtUI::H1);
#endif
break;
@@ -357,14 +355,14 @@ void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) {
case DGUS_Data::Heater::H0:
ExtUI::setTargetTemp_celsius(0, ExtUI::H0);
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
ExtUI::setTargetTemp_celsius(0, ExtUI::H1);
break;
#endif
}
dgus_screen_handler.SetStatusMessagePGM(PSTR("Cooling..."));
dgus_screen_handler.SetStatusMessage(F("Cooling..."));
dgus_screen_handler.TriggerFullUpdate();
}
@@ -390,12 +388,12 @@ void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp);
if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
return;
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -414,12 +412,12 @@ void DGUSRxHandler::ZOffsetStep(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp);
if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
return;
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -456,17 +454,17 @@ void DGUSRxHandler::MoveToPoint(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp);
if (!ExtUI::isPositionKnown()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
return;
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
const uint8_t point = ((uint8_t*)data_ptr)[1];
constexpr float lfrb[4] = LEVEL_CORNERS_INSET_LFRB;
constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB;
float x, y;
switch (point) {
@@ -493,12 +491,12 @@ void DGUSRxHandler::MoveToPoint(DGUS_VP &vp, void *data_ptr) {
break;
}
if (ExtUI::getAxisPosition_mm(ExtUI::Z) < Z_MIN_POS + LEVEL_CORNERS_Z_HOP) {
ExtUI::setAxisPosition_mm(Z_MIN_POS + LEVEL_CORNERS_Z_HOP, ExtUI::Z);
if (ExtUI::getAxisPosition_mm(ExtUI::Z) < Z_MIN_POS + BED_TRAMMING_Z_HOP) {
ExtUI::setAxisPosition_mm(Z_MIN_POS + BED_TRAMMING_Z_HOP, ExtUI::Z);
}
ExtUI::setAxisPosition_mm(x, ExtUI::X);
ExtUI::setAxisPosition_mm(y, ExtUI::Y);
ExtUI::setAxisPosition_mm(Z_MIN_POS + LEVEL_CORNERS_HEIGHT, ExtUI::Z);
ExtUI::setAxisPosition_mm(Z_MIN_POS + BED_TRAMMING_HEIGHT, ExtUI::Z);
}
void DGUSRxHandler::Probe(DGUS_VP &vp, void *data_ptr) {
@@ -506,26 +504,26 @@ void DGUSRxHandler::Probe(DGUS_VP &vp, void *data_ptr) {
UNUSED(data_ptr);
#if ENABLED(MESH_BED_LEVELING)
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_ABL_REQUIRED);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_ABL_REQUIRED));
return;
#endif
if (!ExtUI::isPositionKnown()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
return;
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
dgus_screen_handler.TriggerScreenChange(DGUS_Screen::LEVELING_PROBING);
#if ENABLED(AUTO_BED_LEVELING_UBL)
queue.enqueue_now_P(PSTR("G29P1\nG29P3\nG29P5C"));
queue.enqueue_now(F("G29P1\nG29P3\nG29P5C"));
#else
queue.enqueue_now_P(PSTR("G29"));
queue.enqueue_now(F("G29"));
#endif
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE);
}
@@ -535,7 +533,7 @@ void DGUSRxHandler::DisableABL(DGUS_VP &vp, void *data_ptr) {
UNUSED(data_ptr);
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -576,7 +574,7 @@ void DGUSRxHandler::FilamentMove(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp);
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -600,7 +598,7 @@ void DGUSRxHandler::FilamentMove(DGUS_VP &vp, void *data_ptr) {
}
if (ExtUI::getActualTemp_celsius(extruder) < (float)EXTRUDE_MINTEMP) {
dgus_screen_handler.SetStatusMessagePGM(PSTR("Temperature too low"));
dgus_screen_handler.SetStatusMessage(F("Temperature too low"));
return;
}
@@ -620,7 +618,7 @@ void DGUSRxHandler::Home(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp);
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -634,13 +632,13 @@ void DGUSRxHandler::Home(DGUS_VP &vp, void *data_ptr) {
switch (axis) {
case DGUS_Data::Axis::X_Y_Z:
queue.enqueue_now_P(PSTR("G28XYZ"));
queue.enqueue_now(F("G28XYZ"));
break;
case DGUS_Data::Axis::X_Y:
queue.enqueue_now_P(PSTR("G28XY"));
queue.enqueue_now(F("G28XY"));
break;
case DGUS_Data::Axis::Z:
queue.enqueue_now_P(PSTR("G28Z"));
queue.enqueue_now(F("G28Z"));
break;
}
}
@@ -664,7 +662,7 @@ void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) {
}
if (!ExtUI::isAxisPositionKnown(axis)) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
return;
}
@@ -720,7 +718,7 @@ void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) {
}
if (!ExtUI::isAxisPositionKnown(axis)) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_HOMING_REQUIRED);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_HOMING_REQUIRED));
return;
}
@@ -757,7 +755,7 @@ void DGUSRxHandler::GcodeExecute(DGUS_VP &vp, void *data_ptr) {
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -780,11 +778,11 @@ void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) {
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
queue.enqueue_now_P(PSTR("M502"));
queue.enqueue_now(F("M502"));
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE);
}
@@ -798,11 +796,11 @@ void DGUSRxHandler::SettingsExtra(DGUS_VP &vp, void *data_ptr) {
case DGUS_Data::Extra::BUTTON1:
#if ENABLED(BLTOUCH)
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
queue.enqueue_now_P(PSTR(DGUS_RESET_BLTOUCH));
queue.enqueue_now(F(DGUS_RESET_BLTOUCH));
#else
dgus_screen_handler.TriggerScreenChange(DGUS_Screen::INFOS);
#endif
@@ -827,7 +825,7 @@ void DGUSRxHandler::PIDSelect(DGUS_VP &vp, void *data_ptr) {
dgus_screen_handler.pid_heater = heater;
break;
case DGUS_Data::Heater::H0:
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
#endif
dgus_screen_handler.pid_temp = DGUS_PLA_TEMP_HOTEND;
@@ -844,7 +842,7 @@ void DGUSRxHandler::PIDSetTemp(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp);
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -858,7 +856,7 @@ void DGUSRxHandler::PIDSetTemp(DGUS_VP &vp, void *data_ptr) {
case DGUS_Data::Heater::H0:
temp = constrain(temp, HEATER_0_MINTEMP, (HEATER_0_MAXTEMP - HOTEND_OVERSHOOT));
break;
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
temp = constrain(temp, HEATER_1_MINTEMP, (HEATER_1_MAXTEMP - HOTEND_OVERSHOOT));
break;
@@ -875,7 +873,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) {
UNUSED(data_ptr);
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
@@ -889,7 +887,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) {
heater = H_BED;
break;
#else
dgus_screen_handler.SetStatusMessagePGM(PSTR("Bed PID disabled"));
dgus_screen_handler.SetStatusMessage(F("Bed PID disabled"));
return;
#endif
case DGUS_Data::Heater::H0:
@@ -897,16 +895,16 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) {
heater = H_E0;
break;
#else
dgus_screen_handler.SetStatusMessagePGM(PSTR("PID disabled"));
dgus_screen_handler.SetStatusMessage(F("PID disabled"));
return;
#endif
#if HOTENDS > 1
#if HAS_MULTI_HOTEND
case DGUS_Data::Heater::H1:
#if ENABLED(PIDTEMP)
heater = H_E1;
break;
#else
dgus_screen_handler.SetStatusMessagePGM(PSTR("PID disabled"));
dgus_screen_handler.SetStatusMessage(F("PID disabled"));
return;
#endif
#endif
@@ -936,13 +934,13 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) {
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
dgus_screen_handler.TriggerScreenChange(DGUS_Screen::HOME);
queue.enqueue_now_P(PSTR("M1000C"));
queue.enqueue_now(F("M1000C"));
}
void DGUSRxHandler::PowerLossResume(DGUS_VP &vp, void *data_ptr) {
@@ -955,18 +953,18 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) {
}
if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessagePGM(DGUS_MSG_BUSY);
dgus_screen_handler.SetStatusMessage(FPSTR(DGUS_MSG_BUSY));
return;
}
if (!recovery.valid()) {
dgus_screen_handler.SetStatusMessagePGM(PSTR("Invalid recovery data"));
dgus_screen_handler.SetStatusMessage(F("Invalid recovery data"));
return;
}
dgus_screen_handler.TriggerScreenChange(DGUS_Screen::PRINT_STATUS);
queue.enqueue_now_P(PSTR("M1000"));
queue.enqueue_now(F("M1000"));
}
#endif // POWER_LOSS_RECOVERY