🐛 Fix DGUS_Reloaded G-code execution (#23592)
This commit is contained in:
parent
9f06079549
commit
a4ea8bc1e1
@ -57,7 +57,7 @@ void DGUSDisplay::Loop() {
|
|||||||
void DGUSDisplay::Init() {
|
void DGUSDisplay::Init() {
|
||||||
LCD_SERIAL.begin(LCD_BAUDRATE);
|
LCD_SERIAL.begin(LCD_BAUDRATE);
|
||||||
|
|
||||||
Read(DGUS_VERSION, 1);
|
ReadVersions();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DGUSDisplay::Read(uint16_t addr, uint8_t size) {
|
void DGUSDisplay::Read(uint16_t addr, uint8_t size) {
|
||||||
@ -158,6 +158,11 @@ void DGUSDisplay::WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t si
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DGUSDisplay::ReadVersions() {
|
||||||
|
if (gui_version != 0 && os_version != 0) return;
|
||||||
|
Read(DGUS_VERSION, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void DGUSDisplay::SwitchScreen(DGUS_Screen screen) {
|
void DGUSDisplay::SwitchScreen(DGUS_Screen screen) {
|
||||||
DEBUG_ECHOLNPGM("SwitchScreen ", (uint8_t)screen);
|
DEBUG_ECHOLNPGM("SwitchScreen ", (uint8_t)screen);
|
||||||
const uint8_t command[] = { 0x5A, 0x01, 0x00, (uint8_t)screen };
|
const uint8_t command[] = { 0x5A, 0x01, 0x00, (uint8_t)screen };
|
||||||
|
@ -69,6 +69,9 @@ public:
|
|||||||
// Until now I did not need to actively read from the display. That's why there is no ReadVariable
|
// Until now I did not need to actively read from the display. That's why there is no ReadVariable
|
||||||
// (I extensively use the auto upload of the display)
|
// (I extensively use the auto upload of the display)
|
||||||
|
|
||||||
|
// Read GUI and OS version from screen
|
||||||
|
static void ReadVersions();
|
||||||
|
|
||||||
// Force display into another screen.
|
// Force display into another screen.
|
||||||
static void SwitchScreen(DGUS_Screen screen);
|
static void SwitchScreen(DGUS_Screen screen);
|
||||||
// Play sounds using the display speaker.
|
// Play sounds using the display speaker.
|
||||||
|
@ -100,37 +100,37 @@ void DGUSScreenHandler::Loop() {
|
|||||||
if (new_screen != DGUS_Screen::BOOT) {
|
if (new_screen != DGUS_Screen::BOOT) {
|
||||||
const DGUS_Screen screen = new_screen;
|
const DGUS_Screen screen = new_screen;
|
||||||
new_screen = DGUS_Screen::BOOT;
|
new_screen = DGUS_Screen::BOOT;
|
||||||
|
if (current_screen == screen)
|
||||||
if (current_screen == screen) {
|
|
||||||
TriggerFullUpdate();
|
TriggerFullUpdate();
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
MoveToScreen(screen);
|
MoveToScreen(screen);
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!booted && ELAPSED(ms, 3000)) {
|
if (!booted && ELAPSED(ms, 3000)) {
|
||||||
booted = true;
|
booted = true;
|
||||||
|
|
||||||
if (current_screen == DGUS_Screen::BOOT) {
|
dgus_display.ReadVersions();
|
||||||
|
|
||||||
|
if (current_screen == DGUS_Screen::BOOT)
|
||||||
MoveToScreen(DGUS_Screen::HOME);
|
MoveToScreen(DGUS_Screen::HOME);
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ELAPSED(ms, next_event_ms) || full_update) {
|
if (ELAPSED(ms, next_event_ms) || full_update) {
|
||||||
next_event_ms = ms + DGUS_UPDATE_INTERVAL_MS;
|
next_event_ms = ms + DGUS_UPDATE_INTERVAL_MS;
|
||||||
|
|
||||||
if (!SendScreenVPData(current_screen, full_update)) {
|
if (!SendScreenVPData(current_screen, full_update))
|
||||||
DEBUG_ECHOLNPGM("SendScreenVPData failed");
|
DEBUG_ECHOLNPGM("SendScreenVPData failed");
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current_screen == DGUS_Screen::WAIT
|
if (current_screen == DGUS_Screen::WAIT
|
||||||
&& ((wait_continue && !wait_for_user)
|
&& ((wait_continue && !wait_for_user)
|
||||||
|| (!wait_continue && IsPrinterIdle()))) {
|
|| (!wait_continue && IsPrinterIdle()))
|
||||||
|
) {
|
||||||
MoveToScreen(wait_return_screen, true);
|
MoveToScreen(wait_return_screen, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -151,7 +151,6 @@ void DGUSScreenHandler::Loop() {
|
|||||||
|
|
||||||
if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && IsPrinterIdle()) {
|
if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && IsPrinterIdle()) {
|
||||||
eeprom_save = 0;
|
eeprom_save = 0;
|
||||||
|
|
||||||
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE);
|
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -187,7 +186,6 @@ void DGUSScreenHandler::SettingsReset() {
|
|||||||
|
|
||||||
if (!settings_ready) {
|
if (!settings_ready) {
|
||||||
settings_ready = true;
|
settings_ready = true;
|
||||||
|
|
||||||
Ready();
|
Ready();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,9 +223,8 @@ void DGUSScreenHandler::LoadSettings(const char *buff) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DGUSScreenHandler::ConfigurationStoreWritten(bool success) {
|
void DGUSScreenHandler::ConfigurationStoreWritten(bool success) {
|
||||||
if (!success) {
|
if (!success)
|
||||||
SetStatusMessage(F("EEPROM write failed"));
|
SetStatusMessage(F("EEPROM write failed"));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DGUSScreenHandler::ConfigurationStoreRead(bool success) {
|
void DGUSScreenHandler::ConfigurationStoreRead(bool success) {
|
||||||
@ -236,7 +233,6 @@ void DGUSScreenHandler::ConfigurationStoreRead(bool success) {
|
|||||||
}
|
}
|
||||||
else if (!settings_ready) {
|
else if (!settings_ready) {
|
||||||
settings_ready = true;
|
settings_ready = true;
|
||||||
|
|
||||||
Ready();
|
Ready();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -245,33 +241,25 @@ void DGUSScreenHandler::PlayTone(const uint16_t frequency, const uint16_t durati
|
|||||||
UNUSED(duration);
|
UNUSED(duration);
|
||||||
|
|
||||||
if (frequency >= 1 && frequency <= 255) {
|
if (frequency >= 1 && frequency <= 255) {
|
||||||
if (duration >= 1 && duration <= 255) {
|
if (duration >= 1 && duration <= 255)
|
||||||
dgus_display.PlaySound((uint8_t)frequency, (uint8_t)duration);
|
dgus_display.PlaySound((uint8_t)frequency, (uint8_t)duration);
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
dgus_display.PlaySound((uint8_t)frequency);
|
dgus_display.PlaySound((uint8_t)frequency);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DGUSScreenHandler::MeshUpdate(const int8_t xpos, const int8_t ypos) {
|
void DGUSScreenHandler::MeshUpdate(const int8_t xpos, const int8_t ypos) {
|
||||||
if (current_screen != DGUS_Screen::LEVELING_PROBING) {
|
if (current_screen != DGUS_Screen::LEVELING_PROBING) {
|
||||||
if (current_screen == DGUS_Screen::LEVELING_AUTOMATIC) {
|
if (current_screen == DGUS_Screen::LEVELING_AUTOMATIC)
|
||||||
TriggerFullUpdate();
|
TriggerFullUpdate();
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t point = ypos * GRID_MAX_POINTS_X + xpos;
|
uint8_t point = ypos * GRID_MAX_POINTS_X + xpos;
|
||||||
probing_icons[point < 16 ? 0 : 1] |= (1U << (point % 16));
|
probing_icons[point < 16 ? 0 : 1] |= (1U << (point % 16));
|
||||||
|
|
||||||
if (xpos >= GRID_MAX_POINTS_X - 1
|
if (xpos >= GRID_MAX_POINTS_X - 1 && ypos >= GRID_MAX_POINTS_Y - 1 && !ExtUI::getMeshValid())
|
||||||
&& ypos >= GRID_MAX_POINTS_Y - 1
|
probing_icons[0] = probing_icons[1] = 0;
|
||||||
&& !ExtUI::getMeshValid()) {
|
|
||||||
probing_icons[0] = 0;
|
|
||||||
probing_icons[1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
TriggerFullUpdate();
|
TriggerFullUpdate();
|
||||||
}
|
}
|
||||||
@ -282,15 +270,12 @@ void DGUSScreenHandler::PrintTimerStarted() {
|
|||||||
|
|
||||||
void DGUSScreenHandler::PrintTimerPaused() {
|
void DGUSScreenHandler::PrintTimerPaused() {
|
||||||
dgus_display.PlaySound(3);
|
dgus_display.PlaySound(3);
|
||||||
|
|
||||||
TriggerFullUpdate();
|
TriggerFullUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DGUSScreenHandler::PrintTimerStopped() {
|
void DGUSScreenHandler::PrintTimerStopped() {
|
||||||
if (current_screen != DGUS_Screen::PRINT_STATUS
|
if (current_screen != DGUS_Screen::PRINT_STATUS && current_screen != DGUS_Screen::PRINT_ADJUST)
|
||||||
&& current_screen != DGUS_Screen::PRINT_ADJUST) {
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
dgus_display.PlaySound(3);
|
dgus_display.PlaySound(3);
|
||||||
|
|
||||||
@ -309,23 +294,19 @@ void DGUSScreenHandler::FilamentRunout(const ExtUI::extruder_t extruder) {
|
|||||||
#if ENABLED(SDSUPPORT)
|
#if ENABLED(SDSUPPORT)
|
||||||
|
|
||||||
void DGUSScreenHandler::SDCardInserted() {
|
void DGUSScreenHandler::SDCardInserted() {
|
||||||
if (current_screen == DGUS_Screen::HOME) {
|
if (current_screen == DGUS_Screen::HOME)
|
||||||
TriggerScreenChange(DGUS_Screen::PRINT);
|
TriggerScreenChange(DGUS_Screen::PRINT);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DGUSScreenHandler::SDCardRemoved() {
|
void DGUSScreenHandler::SDCardRemoved() {
|
||||||
if (current_screen == DGUS_Screen::PRINT) {
|
if (current_screen == DGUS_Screen::PRINT)
|
||||||
TriggerScreenChange(DGUS_Screen::HOME);
|
TriggerScreenChange(DGUS_Screen::HOME);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DGUSScreenHandler::SDCardError() {
|
void DGUSScreenHandler::SDCardError() {
|
||||||
SetStatusMessage(GET_TEXT_F(MSG_MEDIA_READ_ERROR));
|
SetStatusMessage(GET_TEXT_F(MSG_MEDIA_READ_ERROR));
|
||||||
|
if (current_screen == DGUS_Screen::PRINT)
|
||||||
if (current_screen == DGUS_Screen::PRINT) {
|
|
||||||
TriggerScreenChange(DGUS_Screen::HOME);
|
TriggerScreenChange(DGUS_Screen::HOME);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
Loading…
Reference in New Issue
Block a user