Commit Graph

5316 Commits

Author SHA1 Message Date
Guðni Már Gilbert 7799853a05 optimisation: remove duplicate code
Sound_MakeCustom should play the sound
if critical = true OR the sound is not Silent

Change in memory:
Flash: -16 bytes
SRAM:  0 bytes
2023-02-11 12:42:47 +01:00
D.R.racer c826ae989f Remove Done button on FINDA-related MMU error screens
Follows the requirements from Prusa-Error-Codes yaml definition.
Saves a fwe bytes as well as the button switch() statement got simplified.

PFW-1494
2023-02-10 14:38:18 +01:00
3d-gussner 8b1b632164 Fix copy/paste typo thanks to @gudnimg 2023-02-10 14:35:36 +01:00
3d-gussner 4f8dbb19fd Fix `M862.x` LCD messages
As the new menue adds a Yes/No option the messages
need to be limited to c=20 r=3
Updated/shortened all translations
2023-02-10 14:35:36 +01:00
3d-gussner b02e8d9961 Fix First layer cal being stored without confirming with knob 2023-02-10 14:34:16 +01:00
RoboMagus c3cfc86094 Fix #3977 2023-02-10 14:27:04 +01:00
Yuri D'Elia d403d58b19 TM: Do not emit an "error:" on the serial for recoverable errors
Use "echo:" for thermal model error reporting to avoid octoprint
automatically sending a M112 kill.

Keep using "error:" instead for other thermal errors (MAXTEMP/etc).

This should allow resuming a thermal mode pause with the default
octoprint settings.
2023-02-10 14:24:50 +01:00
Guðni Már Gilbert ea7e717204 Cleanup: Remove various dead code 2023-02-10 08:17:36 +01:00
3d-gussner ca978080c4 Change to Thermal model
Add prusa.io/tm-cal link
and update all TM related translations
2023-02-08 15:36:59 +01:00
D.R.racer 26126906ef Hardcode expected MMU FW version into the error message v2
This is an 80% solution to PFW-1488 which should be somewhat compatible with the existing languages/translations infrastructure.
I don't see a point in extending the infrastructure a great deal to support some compile-time replacement in order to patch just MSG_DESC_FW_UPDATE_NEEDED.

Related PR: https://github.com/prusa3d/Prusa-Firmware/pull/3993
2023-02-08 10:50:33 +01:00
Guðni Már Gilbert 99761bdff7 optimisation: re-use adjust_bed_reset()
Move the code into eeprom.cpp since we're only working with EEPROM

Change in memory:
Flash: -42 bytes
SRAM: 0 bytes
2023-02-08 08:01:55 +01:00
D.R.racer 3ddc2cf86d Add ResetMMU and DisableMMU buttons to specific error screens
- MMU not responding/Communication error: add DisableMMU
- MMU FW update needed: add ResetMMU

Flash: +8B
RAM: +0B
2023-02-08 06:48:11 +01:00
D.R.racer 296b0414af Optimize execute_extruder_sequence
Save 64B by refactoring of execute_extruder_sequence.
2023-02-08 06:47:50 +01:00
Guðni Már Gilbert e34ed479ef PFW-831 Add single buzzer beep when an MMU error screen is shown for the first time
If the user has the sound settings set to 'Silent' then this beep should be silent

Change in memory:
Flash: +4 bytes
SRAM: 0 bytes
2023-02-06 08:35:08 +01:00
Guðni Már Gilbert b28aa6f42a PFW-1471 Rename 'Toolchange count' to 'Material changes'
Added the string to our message so it can be translated

Change in memory:
Flash: -10 bytes
SRAM: 0 bytes
2023-02-06 08:33:40 +01:00
D.R.racer ba34661b62 Fixup after rebase onto MK3 2023-02-01 08:28:23 +01:00
Guðni Már Gilbert d66e2b66c2 Cleanup: use setTargetHotend consistently for one extruder
Main changes:
* setAllTargetHotends() is removed
* setTargetHotendSafe() is removed
* Extruder parameter on setTargetHotend() is dropped

Change in memory:
Flash: -192 bytes
SRAM: 0 bytes
2023-02-01 08:28:23 +01:00
D.R.racer ed80defc2c Shorten the Try-Load-Unload sequence
... and allow easier future tweking in case of need
Also, save ~30B of code by returning the previous E-motor position.
2023-02-01 06:38:19 +01:00
Guðni Már Gilbert e597be2cb5 PFW-1381 Optimise initialisation
Change in memory:
Flash: -2 bytes
SRAM: -1 byte
2023-01-31 10:02:15 +01:00
Guðni Már Gilbert a35e7d543f Fix bug with button choice on MMU error screen isn't reset
PFW-1381
2023-01-31 10:02:15 +01:00
D.R.racer d2f3835b2c Fixup after review 2023-01-31 09:35:22 +01:00
Guðni Már Gilbert 8720602b0e Fix an issue with corrupt serial messages 2023-01-31 09:35:22 +01:00
D.R.racer 43ae2c78e5 Fix cmake build 2023-01-31 09:35:22 +01:00
D.R.racer 528abcb8d8 clang-format 2023-01-31 09:35:22 +01:00
D.R.racer 0555376502 Refactor mmu2.cpp and related interfaces
The general idea is to keep platform specific implementation away from the MMU state machines as much as we can.
That would enable unit testing the top level MMU state machine and integration into other project as well (if needed).
2023-01-31 09:35:22 +01:00
Yuri D'Elia e39f2d132e TM: Check for PC parameters more carefully 2023-01-27 14:57:59 +01:00
3d-gussner 216b935488 Minor typo 2023-01-26 12:20:43 +01:00
3d-gussner 05cd50e2ef Update M214 description with link to RepRap wiki 2023-01-26 12:20:43 +01:00
Guðni Már Gilbert da63d73585 optimisation: don't print floats with lcd_print()
Change in memory:
Flash: -442 bytes
SRAM: 0 bytes
2023-01-25 18:21:22 +00:00
Guðni Már Gilbert a5f7f1d735 optimisation: change index from uint32_t to uint8_t
Change in memory:
Flash: -152 bytes
SRAM: 0 bytes
2023-01-25 18:21:22 +00:00
Guðni Már Gilbert 8c4cd11ae0 Cleanup: remove code_value_float()
The function adds a bit of overhead compared to code_value()

I suspect this function is a relic of the past.

Change in memory:
Flash: -82 bytes
SRAM: 0 bytes
2023-01-25 16:51:10 +00:00
Guðni Már Gilbert 17e6f1b75e optimisation: remove conv2str.cpp
Change in memory:
Flash: -288 bytes
SRAM: -8 bytes
2023-01-25 06:28:00 +00:00
Guðni Már Gilbert 79a10868fe cleanup: FILWIDTH_PIN doesn't exist
raw_filwidth_value variable is never used
2023-01-24 19:41:45 +00:00
3d-gussner 7b163cf464
Merge pull request #3936 from wavexx/tm_cal_htemp
TM: Do not restrict autotune temperature
2023-01-24 14:20:55 +01:00
3d-gussner fab4165f4a
Merge pull request #3920 from wavexx/selftest_ok_alert
wizard: Do no set "Self test OK" as an alert message
2023-01-24 14:16:44 +01:00
3d-gussner 1f54dfd0b2
Merge pull request #3941 from wavexx/tm_wizard_nowarn
wizard: Disable TM warnings during calibration
2023-01-24 14:15:04 +01:00
Alex Voinea 53fb4c3e3f Move altfan eeprom initialization to extruder_altfan_detect()
flash: -16B
RAM: 0B
2023-01-23 19:47:03 +00:00
Guðni Már Gilbert 7245c76094 Fix an issue where Altfan Override setting in EEPROM is not respected at boot-up 2023-01-23 19:47:03 +00:00
Yuri D'Elia c9f3a4cfce wizard: Disable TM warnings during calibration
During calibration model warnings are possible/normal. This is
apparently leading some into thinking the hotend might be faulty
and abort the calibration with a hard reset.

Disable warnings/beeps during calibration.

Rely on the error threshold only.
2023-01-23 16:52:27 +01:00
Yuri D'Elia 679208b29e TM: Do not restrict autotune temperature
Fix a wrong type that prevents running TM autotune at temps >127
2023-01-20 19:18:19 +01:00
Guðni Már Gilbert 39f9979655 optimisation: Combine if statement in M600
Change in memory:
Flash: -52 bytes
SRAM: 0 bytes
2023-01-18 09:44:27 +01:00
D.R.racer 6298722f9a Disable E-motor before the MMU starts doing something
It may seem counterintuitive to disable the E-motor, but it gets enabled in the planner whenever the E-motor is to move.
The idea behind disbling the E-motor when it won't be needed for some time is to save power and lower the heat of the motor.
Therefore it is especially important to disable the motor before the printer pauses a print due to some MMU error screen.
2023-01-18 09:42:57 +01:00
Alex Voinea 0c352ac2d1 Disable M47 if TMC2130 drivers are used
flash: -126B
RAM: 0B
2023-01-17 20:37:27 +01:00
Guðni Már Gilbert d83c0f6c40 Fix an issue with indexing PROGMEM pointer
Using array index 'pointer[index]' doesn't work properly.
Instead using "pointer + index" works fine.

No change in memory footprint
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert 9416310f7e optimisation: move row_offsets into PROGMEM
Change in memory:
Flash: -42 bytes
SRAM: -4 bytes
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert eeb5f3d50c optimisation: refactor menu_draw_P()
Add a way to only change the LCD column

Change in memory:
Flash: -90 bytes
SRAM: 0 bytes
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert 730bb3708e Fix an issue with menu_draw_item_puts_P
Change in memory:
Flash: +16 bytes
SRAM: 0 bytes
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert 4f4153175c Refactor menu_draw_toggle_puts_P
The refactoring drops the local buffer lineStr

Change in memory:
Flash: -106 bytes
SRAM: 0 bytes
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert cc08b938b7 Optimisations: implement lcd_print_pad_P()
Used lcd_print_pad_P is some obvious places. We can probably use
this function in more places to further save flash memory

Change in memory:
Flash: -268 bytes
SRAM: 0 bytes
2023-01-16 12:36:57 +01:00
Yuri D'Elia 16a89b9215 wizard: Return to status after calibration 2023-01-16 11:38:56 +01:00
D.R.racer 472f84e46a Avoid FullScreenMsg "Eject/Cut Filament" when called inside a toolchange
CutFilament and EjectFilament got a flag: enable/disable FullScreenMsg
2023-01-16 09:25:04 +01:00
D.R.racer 48ce22d41f Fix blank LCD while err. Load to Extr. Failed
Because this error is not an MMU error but a printer one, the existing infrastructure has been bent to support such a scenario.
During testing it turned out, that some machines fail to draw the error screen due to previous internal states.
This PR resets the internal states so that the conditions for drawing the error screen are met.
2023-01-16 09:25:04 +01:00
Yuri D'Elia 4f177f0b38 TM: Fan measuring state reset unification
Add resetFanCheck() to reset the fan measuring state as it's needed in
several places and save some flash space.
2023-01-16 08:43:36 +01:00
Yuri D'Elia 7529652dca TM: Restore extruder autofan state when stopping/resuming
During thermal errors all fans are set to full speed.

When the print is resumed or stopped *and* the thermal error is gone,
also restore the autofan state.

Fixes #3893
2023-01-16 08:43:36 +01:00
Yuri D'Elia 204df90d6d TM: Set the cal status bit when running `M310 A` directly
Running `M310 A` should set the TM calibration bit status if the
autotune procedure was successful.

Partially addresses #3891 and #3890, since running `M310 A F0` should
*still* count as valid calibration data and is not something that can be
replicated by using the LCD (which enforces self-test).
2023-01-16 07:32:57 +01:00
Yuri D'Elia 12f5bd3648 wizard: Do not complain about missing calibration if model is disabled
This fixes #3891 without having to set the calibration bit, meaning
that if the model is later re-enabled without a real calibration, a
prompt is shown as expected.
2023-01-16 07:31:33 +01:00
3d-gussner 2d34535977 Move Z to top during Nozzle change 2023-01-16 07:27:53 +01:00
D.R.racer 58bed7e388 MMU: Make sound after the hotend reaches temp, not while waiting 2023-01-16 07:19:11 +01:00
Guðni Már Gilbert 5582114628 optimisation: re-use delay_keep_alive() in a few places
Change in memory:
Flash: -52 bytes
SRAM: 0 bytes
2023-01-15 19:21:55 +01:00
Yuri D'Elia 9e0e0f5942 wizard: Do no set "Self test OK" as an alert message
Alert messages are intended to persist above "info" messages, thus
preventing further calibration status updates to be shown (such as
thermal model calibration).

Just set the message as a regular status message.

Fixes #3892
2023-01-15 18:25:15 +01:00
Guðni Már Gilbert d3aa40a575 Fix blank LCD issue 2023-01-14 13:51:10 +01:00
Guðni Már Gilbert 76d1f28c14 optimisation: serialecho_temperatures should print a constant extruder number
Change in memory:
Flash: -18 bytes
SRAM: 0 bytes
2023-01-14 11:22:03 +00:00
Guðni Már Gilbert 62fc19b361 optimisation: combine a few serial logs since extruder is now constant 2023-01-14 11:22:03 +00:00
Guðni Már Gilbert 858e80e806 optimisation: M109 doesn't have a T parameter.
In 8-bit firmware the tool is always 0.

Change in memory:
Flash: -146 bytes
SRAM: 0 bytes
2023-01-14 11:22:03 +00:00
Guðni Már Gilbert ff49c6a0bf optimisation: M104 doesn't have a T parameter
Change in memory:
Flash: -120 bytes
SRAM: 0 bytes
2023-01-14 11:22:03 +00:00
Guðni Már Gilbert 44660f668a optimisation: M105 doesn't have a T parameter
Remove parameter from gcode_M105() extruder is always 0.

Change in memory:
Flash: -64 bytes
SRAM: 0 bytes
2023-01-14 11:22:03 +00:00
Guðni Már Gilbert fa0a522b7d optimisation: re-use serialecho_temperatures()
Change in memory:
Flash: -82 bytes
SRAM: 0 bytes
2023-01-10 07:22:35 +01:00
Guðni Már Gilbert f1cd388370 Shorter code 2023-01-06 19:33:32 +01:00
Guðni Már Gilbert 8c79bab503 optimisation: there is only one extruder when planning a line
Change in memory:
Flash: -50 bytes
SRAM: -3 bytes
2023-01-06 19:33:32 +01:00
Guðni Már Gilbert 534c2e2664 Cleanup: Remove M218
It was only enabled when multiple extruders are enabled

The firmware doesn't support it
and even if the M218 gcode could be used, the code does not compile
2023-01-06 19:30:05 +01:00
Yuri D'Elia 96a7383f19
Merge pull request #3869 from wavexx/m300_s0
Make M300 S0 pause like Marlin
2023-01-02 19:23:58 +01:00
3d-gussner ba3ee0b4c6 Fix few values 2023-01-02 15:11:01 +01:00
3d-gussner 20634a3852 Update calibration status v2 documentation 2023-01-02 15:11:01 +01:00
D.R.racer 3d9dd08c16 Change MMU error links to a new url
PFW-1473
2023-01-02 12:43:08 +01:00
Yuri D'Elia 7a6d588d97 TM: Mark more internal functions as static 2023-01-02 10:52:07 +01:00
Yuri D'Elia 50209815ea 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:07 +01:00
Yuri D'Elia 543b333007 Remove extra delay after critical sound
This delay doesn't exist for the tone generator, so remove it from the
pure version as well.
2022-12-31 01:13:45 +01:00
Yuri D'Elia e45adb4cee Make M300 S0 pause like Marlin
Follow Marlin's behavior and simply insert a delay for the requested
duration when using M300 S0.

When S is not specified, use the default tone instead.

Fixes #3856
2022-12-31 01:13:45 +01:00
Guðni Már Gilbert 9cbf0a28cc
Fix an issue on multilang builds where first two charactes are not rendered (#3781) 2022-12-30 15:18:48 +01:00
D.R.racer 85d27e6e5e Address 3 different start scenarios 1st lay cal + MMU
This PR tries to address the 3 different startup scenarios for 1st layer calibration with the MMU:

- 1st lay cal started with correct filament already loaded in the nozzle - we should continue, but skip the first 58mm (first 2 g-codes in the hard coded sequence) of purge line extrusion
- 1st lay cal started with other filament already loaded in the nozzle - we should unload and then issue a toolchange with no extra unload
- 1st lay cal started without loaded filament - we should just do a toolchange with no extra unload

PFW-1457
2022-12-30 15:04:45 +01:00
D.R.racer 52a3beb931 Cut & Eject: avoid preheat if no filament loaded
and add fullscreen messages for Cut & Eject (messages intentionally reused to save space)
2022-12-30 14:23:44 +01:00
D.R.racer 43f3865d7c Tune UI CutFilament & EjectFilament 2022-12-30 14:23:44 +01:00
D.R.racer ec1d12d929 Introduce FILAMENT_EJECTED + tune Eject operation + inc. MMU ver. 2.1.6 2022-12-30 14:23:44 +01:00
D.R.racer 58ff0efb30 Silence nodiscard attribute at one spot
... where it is really irrelevant
2022-12-30 14:23:44 +01:00
D.R.racer ce7ab1d73c Fixup: build MK25/MK3 (non-S) 2022-12-30 14:23:44 +01:00
D.R.racer ebbf2378ed Update MMU error texts
as per https://github.com/prusa3d/Prusa-Error-Codes/pull/71
2022-12-30 14:23:44 +01:00
D.R.racer 5e103cc24e Fixup: restoring temp. while Load2ExtrFailed 2022-12-30 14:23:44 +01:00
D.R.racer d4f0f363cd Fixes from tests
- introduce Cut Filament
- limit retries try-unload
- fix waiting in "Load to extruder failed" error screen
- add LOAD_TO_EXTRUDER_FAILED error definition
2022-12-30 14:23:44 +01:00
D.R.racer a30ea1c5ab Rename error: Load to Extruder Failed
as per request from the Content team
2022-12-30 14:23:44 +01:00
D.R.racer 0a3517e8b2 Show an error screen when try-unload fails to push filament into nozzle
This is a prototype implementation of having the ability to show an MMU error screen even for printer's errors (during an MMU operation).
Also, the retry count of unloads after failed load the extruder tube is now limited to ~3 attempts.

Technically, since this very error is not an MMU's one (MMU is just fine at this stage) but a printer's one I tried to hack the existing error-reporting infrastructure to handle such a case.
The original idea of this approach was suggested by @vintagePC
2022-12-30 14:23:44 +01:00
D.R.racer b2b7990cfc Allow tweaking try-unload feedrates
It looks like MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE can get much higher that the original 20mm/s.
50mm/s is the default now, can be tweaked further.
2022-12-30 14:23:44 +01:00
Yuri D'Elia c5d2aedfe4 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.
2022-12-30 14:14:01 +01:00
Yuri D'Elia 66071c0b5b 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.
2022-12-30 14:14:01 +01:00
Yuri D'Elia 2a1511f7b1 Read version data from progmem in eeprom_fw_version_older_than 2022-12-30 14:14:01 +01:00
Yuri D'Elia dd99b1ab32 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)
2022-12-30 14:14:01 +01:00
Yuri D'Elia 8fa0a22b8d 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.
2022-12-30 14:14:01 +01:00
Yuri D'Elia 414972c876 Unbreak build with !PINDA_THERMISTOR 2022-12-30 14:14:01 +01:00
Yuri D'Elia 7828788e5c Handle CALIBRATION_STATUS_TEMP_MODEL 2022-12-30 14:14:01 +01:00
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