Commit Graph

5215 Commits

Author SHA1 Message Date
Yuri D'Elia 2a13ce4c62 Handle CALIBRATION_STATUS_SELFTEST 2022-12-30 14:14:01 +01:00
Yuri D'Elia b8c1f34e31 Handle CALIBRATION_STATUS_{Z,XYZ} 2022-12-30 14:14:01 +01:00
Yuri D'Elia b41ece175b Handle CALIBRATION_STATUS_LIVE_ADJUST 2022-12-30 14:14:01 +01:00
Yuri D'Elia 5ec627c12c 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.
2022-12-30 14:14:01 +01:00
Yuri D'Elia 22c0e15047 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
2022-12-30 14:14:01 +01:00
Yuri D'Elia a712546269 wizard: Remove unused wizard stages
Remove PreheatPla/IsPla, as we currently always explicitly ask for the
material type.
2022-12-30 14:14:01 +01:00
Yuri D'Elia da6e56a17e Simplify altfan override initialization 2022-12-30 14:14:01 +01:00
Yuri D'Elia 9a018230ce 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
2022-12-30 14:14:01 +01:00
Yuri D'Elia 2552fee4c7 eeprom: Fix EEPROM_HEAT_BED_ON_LOAD_FILAMENT debug offset in docs 2022-12-30 14:14:01 +01:00
Yuri D'Elia 0e2c2d9eea 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).
2022-12-30 14:14:01 +01:00
Yuri D'Elia 74609009ca Fix M117 string offset 2022-12-30 14:06:48 +01:00
Yuri D'Elia 9105573ac9 Handle/strip leading whitespace in gcode stream 2022-12-30 14:06:48 +01:00
Yuri D'Elia a4d427adf2 De-specialize M0/M1/M117
Since we no longer scan for the first command these exceptions can be
removed.
2022-12-30 14:06:48 +01:00
Yuri D'Elia bb1e438f00 Do not scan for GMTD commands
Expect these to be always at the start of the line.
2022-12-30 14:06:48 +01:00
Yuri D'Elia f46be49f7d Tighten parsing of M0/M1/M117/PRUSA
Expect these to be always at the start of the command (which is now
stripped of the extra line number), reducing the number of corner cases
due to these not following the g-code spec.
2022-12-30 14:06:48 +01:00
Yuri D'Elia 7c896a87a4 Remove '*' (checksum) handling in process_commands
The checksum is already removed from the command queue so there's no
need to reprocess it in the main loop.
2022-12-30 14:06:48 +01:00
Yuri D'Elia 6651f5ce8b Strip the line number from the command queue
This increases the number of commands that can be queued and at the same
time it avoids a considerable amount of rescanning in a critical path.
2022-12-30 14:06:48 +01:00
Guðni Már Gilbert 797513d3c5 Remove T parameter from M221
Fixes #3852
2022-12-30 13:07:56 +01:00
Guðni Már Gilbert 4219beed71 Remove initial cursor setting
The cursor position is controlled by
the for-loop

Change in memory:
Flash: -8 bytes
SRAM: 0 bytes
2022-12-30 12:57:07 +01:00
Guðni Már Gilbert 1186b36bfa Remove whitespace at start of new row 2022-12-30 12:57:07 +01:00
Guðni Már Gilbert 7529eaec44 Remove duplicate code
msg_next is NULL, then the end of the message has been reached.

Change in memory:
Flash: -24 bytes
SRAM: 0 bytes
2022-12-30 12:57:07 +01:00
Guðni Már Gilbert 5037d1edbc delay_keep_alive calls manage_heater and manage_inactivity
No need to call them again, the for-loop is very quick

Change in memory:
Flash: -10 bytes
SRAM: 0 bytes
2022-12-30 12:57:07 +01:00
Guðni Már Gilbert 1a9b7d79e6 Don't handle whitespace in a special way
Instead of reading and checking if a character is a whitespace
just print it out onto the LCD. This makes the code a bit less
complex. Whether there is a whitespace character, we always end
up reading from program space, so I doubt this has much performance
impact.

Change in memory:
Flash: -38 bytes
SRAM: 0 bytes
2022-12-30 12:57:07 +01:00
Alex Voinea 7925df6aa0 Default check action is continuing 2022-12-30 12:49:57 +01:00
Alex Voinea 96707aadcb Fix timeout making UI freeze 2022-12-30 12:49:57 +01:00
Guðni Már Gilbert 92cf8da45e Remove unused defines 2022-12-30 12:49:57 +01:00
Guðni Már Gilbert df65212449 Add yes-no choice to M862 warning
Fixes #3421

Change in memory:
Flash: -98 bytes
SRAM: 0 bytes
2022-12-30 12:49:57 +01:00
Guðni Már Gilbert cc3d36c78f Replace labs with fabs
Both degHotend and degTargetHotend return a float
In this case it is better to use fabs()

Change in memory:
Flash: -14 bytes
SRAM: 0 bytes
2022-12-29 08:54:50 +01:00
Guðni Már Gilbert 03511a5a7c Remove redundant ultralcd includes in Marlin_main
This also removes two definitions
- ULTRALCD
- LCD_USE_I2C_BUZZER
Neither of them are defined anywhere
2022-12-27 12:03:56 +00:00
Guðni Már Gilbert 9757502abc Remove pins_arduino.h include
This header is already included with Arduino.h which
is included in Marlin.h header.
2022-12-27 12:03:14 +00:00
Guðni Már Gilbert 72857c902c drop conv2str dependency in Marlin_main 2022-12-27 11:59:22 +00:00
Alex Voinea fea608c8c4 A few more meassuring typos 2022-12-22 12:54:42 +01:00
Yuri D'Elia b3790f4094 Typo: meassure -> measure 2022-12-22 12:54:42 +01:00
Yuri D'Elia 52941b1111 Rename xyzcal_meassure_center back to xyzcal_meassure_enter
Keep the enter/leave pairs
2022-12-22 12:54:42 +01:00
Yuri D'Elia 515a625180 Typo: hysterezis -> hysteresis 2022-12-22 12:54:42 +01:00
Alex Voinea 8414c272bf
Merge pull request #3787 from gudnimg/PFW-1439
PFW-1448 Fix underextrusion + compensate load to nozzle extruder sequence for Extra Loading Distance
2022-12-22 11:07:28 +01:00
3d-gussner 9ca7760c2e
Merge pull request #3830 from 3d-gussner/MK3_XYZ_cal_fix
MK3: XYZ cal change message and add LCD ouput
2022-12-20 14:16:49 +01:00
3d-gussner 0bcb4ab59d
Merge pull request #3822 from wavexx/tm_partial_lock
MK3: TM: Prevent lockout on invalid model values
2022-12-20 14:13:56 +01:00
3d-gussner 7fef570d1b Change xyz cal message `up to 24 min.` instead `approx. 12 min.` 2022-12-20 10:30:53 +01:00
Guðni Már Gilbert 355b670cd4 Remove SWSPI which is not used/implemented 2022-12-20 10:10:45 +01:00
Alex Voinea 2b38080c7e
Merge pull request #3833 from leptun/MK3_fix_MK2.5_softReset 2022-12-20 10:02:14 +01:00
3d-gussner ea6450f072 Add LCD output during xyz calibration 2022-12-20 08:36:19 +01:00
3d-gussner 65f5b9e53d
Merge pull request #3818 from wavexx/tm_default_state
TM: Provide full defaults for model data and enable it by default
2022-12-20 07:08:25 +01:00
Alex Voinea 62ea78d46e Handle configurable distance past gears 2022-12-19 23:49:12 +01:00
Alex Voinea 70356b71df Handle filament sensor position that is not 0 2022-12-19 23:41:43 +01:00
Guðni Már Gilbert c72ae8a2f3 PFW-1439 Remove parameters from execute_load_to_nozzle_sequence 2022-12-19 21:12:12 +00:00
Guðni Már Gilbert 6ee5f08505 PFW-1439 Compensate load to nozzle extruder sequence for Extra Loading Distance
The Extra Loading Distance is configurable by the user.
We need to compensate the hardcoded sequence
such that it does not extrude too much or
too little. Currently the firmware
extrudes too little.
2022-12-19 21:12:11 +00:00
Alex Voinea 97ddcc66bb
Merge pull request #3839 from leptun/MMU2_split_variant_config
MMU2 split variant config
2022-12-19 20:31:01 +01:00
Yuri D'Elia c0f96e062b TM: Force initialization after reset 2022-12-19 18:08:01 +01:00
Alex Voinea ba0f051f72 Revert accidental removal of check 2022-12-18 15:55:48 +01:00
Guðni Már Gilbert 4c32e8b403 PFW-1457 make CHECK_FSENSOR into a function 2022-12-18 12:23:20 +00:00
Alex Voinea 5c1c6d9f3b Adjust MMU2 specific distances 2022-12-18 10:30:43 +01:00
Alex Voinea 8623d9ff55 Split the mmu2 config into MMU2 and MMU2S 2022-12-18 09:58:20 +01:00
Guðni Már Gilbert fee68b0f0d PFW-1457 Do not unload at start of First Layer Cal
Fixes issue where First Layer Cal. triggers an unload before any
filament is loaded

The purpose of this if() statement is to handle the case where
a user or developer is sending T-codes to the printer directly
via Serial. Such as when one first sends T0 and then T4.
And unload must be triggered in-between, we can do this automatically
if FINDA detect filament.

Change in memory:
Flash: -10 bytes
SRAM: 0 bytes
2022-12-18 05:51:21 +00:00
Yuri D'Elia dba3428ef2 Improve MSG_ACK_ERROR message 2022-12-17 20:25:47 +01:00
Yuri D'Elia 80c7790e87 Also prevent longpress when Stopped 2022-12-17 17:30:44 +01:00
Yuri D'Elia 271523ad45 TM: Disallow preheat/filament actions when stopped
Require acknowledgement first
2022-12-17 17:00:33 +01:00
Yuri D'Elia f8290f25cd 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-17 16:48:39 +01:00
Yuri D'Elia 0972ef70d0 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-17 16:42:22 +01:00
Yuri D'Elia 8d719efa79 Do not show/call LCD status updates when unchanged
This mostly prevents useless serial noise
2022-12-17 16:35:26 +01:00
Yuri D'Elia 365f845c99 TM: correctly mark repeated anomalies 2022-12-17 16:33:42 +01:00
Yuri D'Elia 6e2f016655 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-17 16:11:31 +01:00
Yuri D'Elia 119dc10b8f Rename print_stop() to lcd_print_stop_finish() for clarity 2022-12-17 16:03:03 +01:00
Alex Voinea c5d406d12f Fix interrupts not enabled during setup() 2022-12-16 16:46:08 +01:00
Guðni Már Gilbert eb8ec9f8b9 If an old firmware is detected, make sure the protocol is actually stopped
The printer shouldn't continue endlessly asking for a version if an old MMU is detected.
Also if the protocol is supposed to be turned off, it
shouldn't be sending S0 queries.
2022-12-16 16:23:19 +01:00
Yuri D'Elia 9f3f0baa47 mmu: Use strncpy when possible
Since tmp is always null-terminated we can save some time compared to a
memcpy call.
2022-12-16 16:21:59 +01:00
Yuri D'Elia b3b9778341 mmu: Silence repeated S0 requests
Update "S0" CRC on replies so that the message is properly silenced.
2022-12-16 16:21:59 +01:00
Yuri D'Elia 78cf51274f mmu: Embed the newline in MMU2_ECHO_MSG/MMU2_ERROR_MSG
This allows to redefine both macros to silence debugging messages, since
we can't redefine the base SERIAL_ECHO.
2022-12-16 16:21:59 +01:00
Yuri D'Elia 5f2f6dde13 array<>::size should return constexpr expression
This allows to size buffers at compile time (matches c++11 behavior).
2022-12-16 16:21:59 +01:00
Guðni Már Gilbert 2e7c237a17 Cleanup: remove automatic parameter from unload_filament()
In M600 and M702, the Z-lift is taken care of outside this function
so it makes no sense to have a Z-lift within unload_filament()

Only exception to this is in the wizard, there I moved the Z-lift to
happen before we start heating the nozzle.

Change in memory:
Flash: -12 bytes
SRAM: 0 bytes
2022-12-16 16:20:09 +01:00
3d-gussner 090c72367d Minor Fix for PR2235
Shorten message to c=12 as some translation of `Yes/No` are 4 chars long
2022-12-16 16:10:15 +01:00
Alex Voinea d43a7da20d fix watchdog not getting disabled on user app boot 2022-12-16 16:01:29 +01:00
3d-gussner 74545e2133 Fix `µ` character shown on translations 2022-12-16 15:59:37 +01:00
Yuri D'Elia c05ac535be 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:30:30 +01:00
Alex Voinea d80e32fa31 retrigger build 2022-12-16 12:55:30 +01:00
Alex Voinea 3f6089f2c1 More documentation for pins file 2022-12-16 12:29:59 +01:00
Alex Voinea e8c8945650 Disable the watchdog early in the program 2022-12-16 12:25:44 +01:00
Alex Voinea 451f601697 Fix MK2.5 softReset() 2022-12-16 12:10:47 +01:00
Yuri D'Elia 001876a807 Parenthesize IS_SD_PRINTING defensively 2022-12-15 08:13:38 +01:00
Yuri D'Elia 3066fd1db3 Replace two expressions with cmd_head 2022-12-15 08:13:02 +01:00
Yuri D'Elia a588a5f695 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-14 13:47:11 +01:00
Yuri D'Elia c7865a83f2 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-14 13:47:11 +01:00
Yuri D'Elia 5c4ec5dd4f 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-13 18:38:26 +01:00
Yuri D'Elia 36575a4f83 Restore the previous model state when performing a nozzle change
Do not force-enable the model if it was previously disabled.
2022-12-12 20:17:56 +01:00
Yuri D'Elia c5ec77a1ce 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-12 18:25:17 +01:00
Yuri D'Elia 0c042440ee eeprom: Document new calibration state 2022-12-12 18:25:17 +01:00
Yuri D'Elia 118b39da39 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-12 18:25:07 +01:00
Yuri D'Elia 38d893589f 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-12 18:24:58 +01:00
Yuri D'Elia 4e7c830661 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-12 17:52:48 +01:00
Yuri D'Elia 249be543fc 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-12 17:52:48 +01:00
Yuri D'Elia 2051809e2f TM: Store only the last autotune result state
- Remove tm::valid and temp_model_valid as it's a duplicate of the
  calibrated() state.
- Add temp_model_autotune_result() for future use.
2022-12-12 17:52:48 +01:00
Yuri D'Elia 324e501b18 TM: Set default resistance levels for MK3/MK3S
Provide average calibrated values for all fan levels for MK3/MK3S
variants and enable the model by default.

This ensures the calibration step is not skipped unless explicitly
disabled.

Force-clear fan values during autotune to restore the previous
calibration behavior, as fan resistance levels can be too big and
prevent the autotune-with-selfcheck to fail.
2022-12-12 17:52:48 +01:00
Yuri D'Elia 877c0bd35c Fix potential buffer overflow in LCD messages 2022-12-12 17:52:48 +01:00
Yuri D'Elia e2f1bfe506 TM: Remove unnecessary display comments
Favor code readability
2022-12-12 17:52:48 +01:00
Yuri D'Elia 4d87f65b68
Merge pull request #3443 from gudnimg/m109-turn-off-fan
Turn off print fan while resuming print from RAM
2022-12-12 15:20:20 +01:00
Yuri D'Elia d84e497007
Merge pull request #3805 from 3d-gussner/MK3_Fix_M862.4_strict
MK3: Fix `M862.4` with [strict] mode
2022-12-12 12:38:15 +01:00
Guðni Már Gilbert 613ea290f5 Add a comment 2022-12-10 10:04:17 +00:00
Guðni Már Gilbert 9ed46df97f Don't show full screen message meant for single color setup
load_filament_to_nozzle will show a more precise full screen message when an MMU is used.
2022-12-10 10:00:58 +00:00
Guðni Már Gilbert 70451b6bd3 Turn off print fan while restoring print from RAM 2022-12-10 09:53:43 +00:00
3d-gussner 40cc6dcb6d
Merge pull request #3783 from leptun/enable_PRUSA_SN_all_variants
Allow "PRUSA SN" to print the SN in eeprom on all variants
2022-12-09 14:51:57 +01:00