Keep in mind that the EEPROM addresses are in descending order. This means we
can't use eeprom_read_block() or eeprom_update_block()
Address --> Axis
3831 --> X-axis
3830 --> Y-axis
3829 --> Z-axis
3828 --> E-axis
Change in memory:
Flash: -118 bytes
SRAM: 0 bytes
Configuration->HW Setup->Checks showed `a`
MSG_FILAMENT `Filament` can only be 8 chars long and only ES and IT had `Filemanto` as translation.
But as ES the `o` in `Filamento` was overwritten by `[Estricto]` I removed the MSG_FILAMENT to be translated.
Saves few bytes.
Pull all checks needed into the function such that the caller
only needs to check the return value
Also added description for the filament_presence_check function
A new menu setting is added to configure how strict the check should be.
- None: No check is performed
- Warning (default): The user is warned about missing and is prompted to continue with Yes/No. If No is selected, the print is aborted. If no user input is given (e.g. from host printing) then the warning will expire in 30 seconds and assume the Yes option was selected
- Strict: If the filament is not detected when a print is started, it is immediately canceled.
The check is currently performed on G-codes: M24 and M75. Starting a SD print and Host print respectively.
Fixes compiler warning in test environment:
Prusa-Firmware/Firmware/eeprom.h:712:51: error: ‘size_t’ has not been declared
712 | bool eeprom_is_initialized_block(const void *__p, size_t __n);
|
The following error is raised in unit testing environment:
Prusa-Firmware/Firmware/Configuration.h:16:14: error: ‘uint16_t’ does not name a type
16 | extern const uint16_t _nPrinterType;
The fixes a scenario where:
lcd_status_screen() calls lcd_commands() upon exiting
lcd_show_fullscreen_message_and_wait_P(_T(MSG_NOZZLE_CNG_READ_HELP));
and so not allowing the user to leave the screen since it will keep being rendered endlessly.
This change only affects lcd_show_fullscreen_message_and_wait_P
This fix is no longer needed today.
LCD knob clicks / and rotation, take care of updating lcd_draw_update.
The real bug was likely lcd_show_multiscreen_message_yes_no_and_wait_P calling lcd_update(), this is fixed now since.