Commit Graph

4664 Commits

Author SHA1 Message Date
Yuri D'Elia
f68479fc38 TM: Mark more internal functions as static 2023-01-02 10:52:20 +01:00
Yuri D'Elia
5a89f6934a TM: Also clear the status flags when disabling the model
Disabling the model during a warn/error condition will also stop
updating the warning/error flag, keeping the printer in an error state.

Clear all flags as well when changing model settings.
2023-01-02 10:52:20 +01:00
Yuri D'Elia
8bd0d6aeb8 wizard: Ask about the sheet before doing Z calibration
Ask to install the sheet immediately after removing the test print.
This makes further messages less confusing.
2023-01-02 10:51:47 +01:00
Yuri D'Elia
fbfacd76a4 wizard: Resume the wizard for missing calibrations during upgrades
Instead of checking for explicit versions, resume the wizard if some
(new) wizard is missing.

This handles both the old SELFTEST check, the new thermal model
and any future check in the same fashion.
2023-01-02 10:51:47 +01:00
Yuri D'Elia
05f37edad5 Read version data from progmem in eeprom_fw_version_older_than 2023-01-02 10:51:47 +01:00
Yuri D'Elia
a8057e0d36 wizard: Disable temperature model during hotend testing
This avoids confusing error messages if the hotend is defective and
caught by selftest itself.

Rearrange Stopped state checks (saves 2 bytes)
2023-01-02 10:51:47 +01:00
Yuri D'Elia
d8ae372309 wizard: Allow partial resuming after reset
Update the eeprom FW version as soon as migration is complete, to avoid
resetting the CALIBRATION_V2 variable at each reset.

Do not implicitly reset the calibration steps for WizState::Run: do this
only for the menu action.
2023-01-02 10:51:47 +01:00
Yuri D'Elia
f158a75041 Unbreak build with !PINDA_THERMISTOR 2023-01-02 10:51:47 +01:00
Yuri D'Elia
0c583ff90a Handle CALIBRATION_STATUS_TEMP_MODEL 2023-01-02 10:51:47 +01:00
Yuri D'Elia
16de033504 Handle CALIBRATION_STATUS_SELFTEST 2023-01-02 10:51:47 +01:00
Yuri D'Elia
b2f3f476c4 Handle CALIBRATION_STATUS_{Z,XYZ} 2023-01-02 10:51:47 +01:00
Yuri D'Elia
17b10167a0 Handle CALIBRATION_STATUS_LIVE_ADJUST 2023-01-02 10:51:47 +01:00
Yuri D'Elia
16033b40b4 wizard: Rewrite the fw upgrade check logic
- Handle the conversion from the V1 calibration status to the V2 bitmap
  for all past FW versions.
- Allow to run the wizard in "Restore" mode (for example during upgrade
  or service prep) to complete any missing steps.
- Fix service prep to use the above feature by clearing the appropriate
  calibration bits.
- Remove exceptions for FW 3.2.0.4 which can now be handled cleanly.
2023-01-02 10:51:47 +01:00
Yuri D'Elia
d478aa5c5e wizard: Rewrite the wizard handling loop
Simplify status tracking:

- S::Restore to continue to the next logical wizard item
- S::Finish for a successful failure
- S::Failed to exit while showing a failure
2023-01-02 10:51:47 +01:00
Yuri D'Elia
8a43aa0024 wizard: Remove unused wizard stages
Remove PreheatPla/IsPla, as we currently always explicitly ask for the
material type.
2023-01-02 10:51:47 +01:00
Yuri D'Elia
6285951eac Simplify altfan override initialization 2023-01-02 10:51:47 +01:00
Yuri D'Elia
612e9d9303 Replace calibration state with a new calibration bitmap
- Move calibration status/declarations to util.h
- Allows to query the status of each step independently without assuming
  any order
- Allows to extend the calibration with new steps transparently
2023-01-02 10:51:47 +01:00
Yuri D'Elia
4ff245c7ee eeprom: Fix EEPROM_HEAT_BED_ON_LOAD_FILAMENT debug offset in docs 2023-01-02 10:51:47 +01:00
Yuri D'Elia
670bca47da Simplify FW eeprom version checks
- Generalize force_selftest_if_fw_version() so we can check when upgrading
  between arbitrary FW versions.
- Do not call update_current_firmware_version_to_eeprom() prematurely
  when forcing self-test (if a reset happens before self-test completes,
  the check would be incorrectly skipped on the next run).
2023-01-02 10:51:47 +01:00
Yuri D'Elia
a18f28715d backport: Stub LCDButtonChoice for LCD_LEFT_BUTTON_CHOICE 2023-01-02 10:51:47 +01:00
Yuri D'Elia
3f86636bb6 backport: Sync new offsets from MK3 2023-01-02 10:51:47 +01:00
3d-gussner
9fecc77c01
Merge pull request #3846 from 3d-gussner/MK3_3.12_XYZ_cal_fix
MK3_3.12: XYZ cal change message and add LCD ouput
2022-12-20 15:14:33 +01:00
3d-gussner
e511996cd4
Merge pull request #3845 from 3d-gussner/MK3_3.12_tm_partial_lock
MK3_3_12: TM: Prevent lockout on invalid model values
2022-12-20 14:37:24 +01:00
3d-gussner
eb9d58a6e0
Merge pull request #3826 from 3d-gussner/MK3_3.12_tm_default_state
MK3_3.12 TM: Provide full defaults for model data and enable it by default
2022-12-20 14:35:56 +01:00
3d-gussner
5a1743711c Change xyz cal message up to 24 min. instead approx. 12 min. 2022-12-20 14:34:25 +01:00
3d-gussner
2f8b2dcad4 Add LCD output during xyz calibration 2022-12-20 14:30:06 +01:00
Yuri D'Elia
650c76e88d TM: Force initialization after reset 2022-12-20 07:06:37 +01:00
Yuri D'Elia
7bf8a64d38 Improve MSG_ACK_ERROR message 2022-12-19 10:50:50 +01:00
Yuri D'Elia
62d362f45f Also prevent longpress when Stopped 2022-12-19 10:50:34 +01:00
Yuri D'Elia
64eefa969b TM: Disallow preheat/filament actions when stopped
Require acknowledgement first

Fix cherry-pick mmu2 issue
2022-12-19 10:50:06 +01:00
Yuri D'Elia
5fc277469a TM: Allow to resume without a running print
If there is no running print, and the printer is Stopped, add a new
"Acknowledge error" menu entry to unlock the printer.

This simply calls lcd_print_stop(), which is identical in behavior to a
thermal error with a running print.
2022-12-19 10:48:40 +01:00
Yuri D'Elia
3c1c2fd2ca Use menu_set_block() in ThermalStop()
Set a menu block for fatal thermal errors instead of abusing
lcd_return_to_status() to kick the user out of the menus.

This now allows a thermal model error to be recoverable through menu
access.
2022-12-19 10:48:26 +01:00
Yuri D'Elia
5e50a15c88 Do not show/call LCD status updates when unchanged
This mostly prevents useless serial noise
2022-12-19 10:48:12 +01:00
Yuri D'Elia
a551536386 TM: correctly mark repeated anomalies 2022-12-19 10:47:58 +01:00
Yuri D'Elia
3b65aa06c5 TM: Clear the Stopped state when stopping the current print
We allow resuming from the LCD via start print and resume print,
it makes sense to clear the error on stop too.

For this reason distinguish whether the action is performed
automatically or manually (ie: interactively).

The error is only cleared when the command is run interactively.
2022-12-19 10:47:41 +01:00
Yuri D'Elia
94583c861b Rename print_stop() to lcd_print_stop_finish() for clarity 2022-12-19 10:47:26 +01:00
Yuri D'Elia
d37a2a173a Parenthesize IS_SD_PRINTING defensively 2022-12-19 10:47:10 +01:00
Yuri D'Elia
de20fc6a5a Replace two expressions with cmd_head 2022-12-19 10:46:58 +01:00
Yuri D'Elia
5ab0dcb4c5 Allow M310 to bypass the Stopped state for recovery
Since M310 cannot change the heaters, allowing M310 S0 (and changing
parameters) allows to recover a usb-controlled printer which has been
locked-out due to bad model settings.
2022-12-19 10:46:45 +01:00
Yuri D'Elia
42125b4bb2 Keep a pointer past the line number in cmdqueue
This allows to skip line numbers transparently and perform faster
checks on the actual command to process.
2022-12-19 10:46:33 +01:00
Yuri D'Elia
c890c9e8b0 TM: Do not lockout the menus on thermal errors
This prevents the ability to run gcode from the SD card.

In a thermal error with faulty values, and without serial access, this
is the only way to process an M310 instruction and recover.
2022-12-19 10:46:17 +01:00
3d-gussner
263a4959d7 Fix µ character shown on translations
Fix cherry-pick issues
2022-12-16 15:58:29 +01:00
Yuri D'Elia
4438aa4909 TM: reset fan measuring state when changing speed
Ensure that fan checks are reset and use the new speed at each step of
the calibration.

This also gives extra time to the fan to ramp-up from a cold start,
when a fancheck could previously start right *after* the speed change.

Should fix #3791
2022-12-16 15:31:34 +01:00
Yuri D'Elia
f81b2a00c1 Restore the previous model state when performing a nozzle change
Do not force-enable the model if it was previously disabled.

Fix cherry-pick issue lcd_show_fullscreen_message_yes_no_and_wait_P
2022-12-15 06:42:21 +01:00
Yuri D'Elia
f194bb1242 wizard: Allow finishing the calibration through menus
If the wizard is interrupted during model calibration, allow the
menu to mark "temperature model" calibration as complete.
2022-12-15 06:32:56 +01:00
Yuri D'Elia
41be93735c eeprom: Document new calibration state 2022-12-15 06:32:35 +01:00
Yuri D'Elia
4ce808c98b wizard: Rework the thermal model calibration logic
- Correctly sequence the enqueued commands in order to check for the
  real calibration result.
- Perform autocalibration with self-check enabled.
- Only save/continue the wizard if autocalibration succeeds.
2022-12-15 06:32:14 +01:00
Yuri D'Elia
6d83a494d6 selftest: Handle thermal errors in lcd_selfcheck_check_heater
- Simplify lcd_selfcheck_check_heater loop
- Check for/abort on Stopped (indicating a thermal failure).
2022-12-15 06:32:01 +01:00
Yuri D'Elia
d2019b70f2 Remove M999 remnants
This was already removed in fc10ca3146
but got reinstated by mistake in the mmu2 merge.

Also remove another incorrect Stopped usage.
2022-12-15 06:31:18 +01:00
Yuri D'Elia
c7812063d9 TM: Restore all original values if autotune fails
- Ensures repeated autotune attempts with self-check can't succeed due
  to different starting conditions.
- Allows for a simpler workflow during selftest and wizard if autotune
  fails.
2022-12-15 06:29:24 +01:00